1<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="804px" preserveAspectRatio="none" style="width:2089px;height:804px;" version="1.1" viewBox="0 0 2089 804" width="2089px" zoomAndPan="magnify"><defs><filter height="300%" id="f1tyzihefeaa12" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="401" x="843.25" y="26.708">Proactive Authentication in Peripheral Role</text><ellipse cx="1030.1563" cy="40.9531" fill="#000000" filter="url(#f1tyzihefeaa12)" rx="10" ry="10" style="stroke:none;stroke-width:1.0;"/><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="119" x="970.6563" y="70.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="95" x="984.6563" y="92.0918">A connects to B</text><path d="M1141.1563,114.9219 L1141.1563,138.6211 L1121.1563,142.6211 L1141.1563,146.6211 L1141.1563,170.3203 A0,0 0 0 0 1141.1563,170.3203 L1366.1563,170.3203 A0,0 0 0 0 1366.1563,170.3203 L1366.1563,124.9219 L1356.1563,114.9219 L1141.1563,114.9219 A0,0 0 0 0 1141.1563,114.9219 " fill="#FBFB77" filter="url(#f1tyzihefeaa12)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M1356.1563,114.9219 L1356.1563,124.9219 L1366.1563,124.9219 L1356.1563,114.9219 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="150" x="1147.1563" y="131.9888">SM actions triggered by</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="1147.1563" y="147.1216">connection complete</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="204" x="1147.1563" y="162.2544">(independent from GATT Client)</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="182" x="939.1563" y="125.6367"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="158" x="953.1563" y="146.7754">SM checks if LTK available</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="254" x="903.1563" y="190.3203"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="230" x="917.1563" y="211.459">App triggers GATT Client request on A</text><polygon fill="#FEFECE" filter="url(#f1tyzihefeaa12)" points="989.1563,244.2891,1071.1563,244.2891,1083.1563,256.2891,1071.1563,268.2891,989.1563,268.2891,977.1563,256.2891,989.1563,244.2891" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="989.1563" y="260.0972">LTK available?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="963.1563" y="253.6948">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="1083.1563" y="253.6948">yes</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="173" x="295.8125" y="278.2891"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="309.8125" y="299.4277">GATT Client request sent</text><polygon fill="#FEFECE" filter="url(#f1tyzihefeaa12)" points="213.8125,332.2578,550.8125,332.2578,562.8125,344.2578,550.8125,356.2578,213.8125,356.2578,201.8125,344.2578,213.8125,332.2578" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="337" x="213.8125" y="348.0659">GATT Server returns an ATT_ERROR_INSUFFICIENT_X error?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="187.8125" y="341.6636">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="562.8125" y="341.6636">yes</text><rect fill="#23DB2B" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="204" x="11" y="366.2578"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="180" x="25" y="387.3965">App receives GATT Response</text><ellipse cx="113" cy="446.2266" fill="#FFFFFF" filter="url(#f1tyzihefeaa12)" rx="11" ry="11" style="stroke:#000000;stroke-width:1.0;"/><ellipse cx="113" cy="446.2266" fill="#000000" rx="6" ry="6" style="stroke:#7F7F7F;stroke-width:1.0;"/><polygon fill="#FEFECE" filter="url(#f1tyzihefeaa12)" points="536.625,366.2578,766.625,366.2578,778.625,378.2578,766.625,390.2578,536.625,390.2578,524.625,378.2578,536.625,366.2578" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="536.625" y="382.0659">ENABLE_GATT_CLIENT_PAIRING defined?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="510.625" y="375.6636">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="778.625" y="375.6636">yes</text><rect fill="#FD5B41" filter="url(#f1tyzihefeaa12)" height="47.9375" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="291" x="245" y="400.2578"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="267" x="259" y="421.3965">App receives GATT_QUERY_COMPLETE event</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="192" x="271" y="435.3652">with ATT_ERROR_INSUFFICIENT_X</text><ellipse cx="390.5" cy="494.1953" fill="#FFFFFF" filter="url(#f1tyzihefeaa12)" rx="11" ry="11" style="stroke:#000000;stroke-width:1.0;"/><ellipse cx="390.5" cy="494.1953" fill="#000000" rx="6" ry="6" style="stroke:#7F7F7F;stroke-width:1.0;"/><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="194" x="815.75" y="400.2578"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="170" x="829.75" y="421.3965">SM_EVENT_PAIRING_STARTED</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="96" x="864.75" y="469.2266"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="72" x="878.75" y="490.3652">start pairing</text><polygon fill="#FEFECE" filter="url(#f1tyzihefeaa12)" points="866.25,538.1953,959.25,538.1953,971.25,550.1953,959.25,562.1953,866.25,562.1953,854.25,550.1953,866.25,538.1953" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="866.25" y="554.0034">pairing success?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="833.25" y="547.6011">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="971.25" y="547.6011">no</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="352" x="566" y="572.1953"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="328" x="580" y="593.334">SM_EVENT_PAIRING_COMPLETE(ERROR_CODE_SUCCESS)</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="191" x="646.5" y="641.1641"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="660.5" y="662.3027">GATT Client request re-sent</text><rect fill="#23DB2B" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="204" x="640" y="709.1016"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="180" x="654" y="730.2402">App receives GATT Response</text><ellipse cx="742" cy="776.0703" fill="#FFFFFF" filter="url(#f1tyzihefeaa12)" rx="11" ry="11" style="stroke:#000000;stroke-width:1.0;"/><ellipse cx="742" cy="776.0703" fill="#000000" rx="6" ry="6" style="stroke:#7F7F7F;stroke-width:1.0;"/><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="243" x="962" y="572.1953"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="219" x="976" y="593.334">SM_EVENT_PAIRING_COMPLETE(error)</text><rect fill="#FD5B41" filter="url(#f1tyzihefeaa12)" height="47.9375" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="291" x="938" y="641.1641"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="267" x="952" y="662.3027">App receives GATT_QUERY_COMPLETE event</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="192" x="968" y="676.2715">with ATT_ERROR_INSUFFICIENT_X</text><ellipse cx="1083.5" cy="734.0703" fill="#FFFFFF" filter="url(#f1tyzihefeaa12)" rx="11" ry="11" style="stroke:#000000;stroke-width:1.0;"/><ellipse cx="1083.5" cy="734.0703" fill="#000000" rx="6" ry="6" style="stroke:#7F7F7F;stroke-width:1.0;"/><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="235" x="1560.5" y="278.2891"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="211" x="1574.5" y="299.4277">SM_EVENT_REENCRYPTION_STARTED</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="119" x="1618.5" y="332.2578"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="95" x="1632.5" y="353.3965">start encryption</text><polygon fill="#FEFECE" filter="url(#f1tyzihefeaa12)" points="1641,401.2266,1715,401.2266,1727,413.2266,1715,425.2266,1641,425.2266,1629,413.2266,1641,401.2266" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="1641" y="417.0347">re-encrypted</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="1608" y="410.6323">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1727" y="410.6323">no</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="393" x="1289" y="435.2266"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="369" x="1303" y="456.3652">SM_EVENT_REENCRYPTION_COMPLETE(ERROR_CODE_SUCCESS)</text><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="173" x="1399" y="504.1953"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="1413" y="525.334">GATT Client request sent</text><rect fill="#23DB2B" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="204" x="1383.5" y="573.1641"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="180" x="1397.5" y="594.3027">App receives GATT Response</text><ellipse cx="1485.5" cy="653.1328" fill="#FFFFFF" filter="url(#f1tyzihefeaa12)" rx="11" ry="11" style="stroke:#000000;stroke-width:1.0;"/><ellipse cx="1485.5" cy="653.1328" fill="#000000" rx="6" ry="6" style="stroke:#7F7F7F;stroke-width:1.0;"/><rect fill="#FEFECE" filter="url(#f1tyzihefeaa12)" height="33.9688" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="284" x="1728.5" y="435.2266"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="260" x="1742.5" y="456.3652">SM_EVENT_REENCRYPTION_COMPLETE(error)</text><rect fill="#FD5B41" filter="url(#f1tyzihefeaa12)" height="47.9375" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="337" x="1702" y="504.1953"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="267" x="1716" y="525.334">App receives GATT_QUERY_COMPLETE event</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="297" x="1732" y="539.3027">with ATT_ERROR_BONDING_INFORMATION_MISSING</text><path d="M1901.5,587.1328 L1901.5,610.832 L1881.5,614.832 L1901.5,618.832 L1901.5,642.5313 A0,0 0 0 0 1901.5,642.5313 L2077.5,642.5313 A0,0 0 0 0 2077.5,642.5313 L2077.5,597.1328 L2067.5,587.1328 L1901.5,587.1328 A0,0 0 0 0 1901.5,587.1328 " fill="#FBFB77" filter="url(#f1tyzihefeaa12)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M2067.5,587.1328 L2067.5,597.1328 L2077.5,597.1328 L2067.5,587.1328 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="151" x="1907.5" y="604.1997">App can delete bonding</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="1907.5" y="619.3325">information and repeat</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="153" x="1907.5" y="634.4653">the GATT Client request</text><ellipse cx="1870.5" cy="614.832" fill="#FFFFFF" filter="url(#f1tyzihefeaa12)" rx="11" ry="11" style="stroke:#000000;stroke-width:1.0;"/><ellipse cx="1870.5" cy="614.832" fill="#000000" rx="6" ry="6" style="stroke:#7F7F7F;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1030.1563" x2="1030.1563" y1="50.9531" y2="70.9531"/><polygon fill="#A80036" points="1026.1563,60.9531,1030.1563,70.9531,1034.1563,60.9531,1030.1563,64.9531" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1030.1563" x2="1030.1563" y1="104.9219" y2="125.6367"/><polygon fill="#A80036" points="1026.1563,115.6367,1030.1563,125.6367,1034.1563,115.6367,1030.1563,119.6367" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1030.1563" x2="1030.1563" y1="159.6055" y2="190.3203"/><polygon fill="#A80036" points="1026.1563,180.3203,1030.1563,190.3203,1034.1563,180.3203,1030.1563,184.3203" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="113" x2="113" y1="400.2266" y2="435.2266"/><polygon fill="#A80036" points="109,425.2266,113,435.2266,117,425.2266,113,429.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="390.5" x2="390.5" y1="448.1953" y2="483.1953"/><polygon fill="#A80036" points="386.5,473.1953,390.5,483.1953,394.5,473.1953,390.5,477.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="912.75" x2="912.75" y1="434.2266" y2="469.2266"/><polygon fill="#A80036" points="908.75,459.2266,912.75,469.2266,916.75,459.2266,912.75,463.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="742" x2="742" y1="606.1641" y2="641.1641"/><polygon fill="#A80036" points="738,631.1641,742,641.1641,746,631.1641,742,635.1641" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="742" x2="742" y1="675.1328" y2="709.1016"/><polygon fill="#A80036" points="738,699.1016,742,709.1016,746,699.1016,742,703.1016" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="742" x2="742" y1="743.0703" y2="765.0703"/><polygon fill="#A80036" points="738,755.0703,742,765.0703,746,755.0703,742,759.0703" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1083.5" x2="1083.5" y1="606.1641" y2="641.1641"/><polygon fill="#A80036" points="1079.5,631.1641,1083.5,641.1641,1087.5,631.1641,1083.5,635.1641" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1083.5" x2="1083.5" y1="689.1016" y2="723.0703"/><polygon fill="#A80036" points="1079.5,713.0703,1083.5,723.0703,1087.5,713.0703,1083.5,717.0703" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="854.25" x2="742" y1="550.1953" y2="550.1953"/><line style="stroke:#A80036;stroke-width:1.5;" x1="742" x2="742" y1="550.1953" y2="572.1953"/><polygon fill="#A80036" points="738,562.1953,742,572.1953,746,562.1953,742,566.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="971.25" x2="1083.5" y1="550.1953" y2="550.1953"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1083.5" x2="1083.5" y1="550.1953" y2="572.1953"/><polygon fill="#A80036" points="1079.5,562.1953,1083.5,572.1953,1087.5,562.1953,1083.5,566.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="912.75" x2="912.75" y1="503.1953" y2="538.1953"/><polygon fill="#A80036" points="908.75,528.1953,912.75,538.1953,916.75,528.1953,912.75,532.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="524.625" x2="390.5" y1="378.2578" y2="378.2578"/><line style="stroke:#A80036;stroke-width:1.5;" x1="390.5" x2="390.5" y1="378.2578" y2="400.2578"/><polygon fill="#A80036" points="386.5,390.2578,390.5,400.2578,394.5,390.2578,390.5,394.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="778.625" x2="912.75" y1="378.2578" y2="378.2578"/><line style="stroke:#A80036;stroke-width:1.5;" x1="912.75" x2="912.75" y1="378.2578" y2="400.2578"/><polygon fill="#A80036" points="908.75,390.2578,912.75,400.2578,916.75,390.2578,912.75,394.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="201.8125" x2="113" y1="344.2578" y2="344.2578"/><line style="stroke:#A80036;stroke-width:1.5;" x1="113" x2="113" y1="344.2578" y2="366.2578"/><polygon fill="#A80036" points="109,356.2578,113,366.2578,117,356.2578,113,360.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="562.8125" x2="651.625" y1="344.2578" y2="344.2578"/><line style="stroke:#A80036;stroke-width:1.5;" x1="651.625" x2="651.625" y1="344.2578" y2="366.2578"/><polygon fill="#A80036" points="647.625,356.2578,651.625,366.2578,655.625,356.2578,651.625,360.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="382.3125" x2="382.3125" y1="312.2578" y2="332.2578"/><polygon fill="#A80036" points="378.3125,322.2578,382.3125,332.2578,386.3125,322.2578,382.3125,326.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1678" x2="1678" y1="312.2578" y2="332.2578"/><polygon fill="#A80036" points="1674,322.2578,1678,332.2578,1682,322.2578,1678,326.2578" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1485.5" x2="1485.5" y1="469.1953" y2="504.1953"/><polygon fill="#A80036" points="1481.5,494.1953,1485.5,504.1953,1489.5,494.1953,1485.5,498.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1485.5" x2="1485.5" y1="538.1641" y2="573.1641"/><polygon fill="#A80036" points="1481.5,563.1641,1485.5,573.1641,1489.5,563.1641,1485.5,567.1641" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1485.5" x2="1485.5" y1="607.1328" y2="642.1328"/><polygon fill="#A80036" points="1481.5,632.1328,1485.5,642.1328,1489.5,632.1328,1485.5,636.1328" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1870.5" x2="1870.5" y1="469.1953" y2="504.1953"/><polygon fill="#A80036" points="1866.5,494.1953,1870.5,504.1953,1874.5,494.1953,1870.5,498.1953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1870.5" x2="1870.5" y1="552.1328" y2="603.832"/><polygon fill="#A80036" points="1866.5,593.832,1870.5,603.832,1874.5,593.832,1870.5,597.832" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1629" x2="1485.5" y1="413.2266" y2="413.2266"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1485.5" x2="1485.5" y1="413.2266" y2="435.2266"/><polygon fill="#A80036" points="1481.5,425.2266,1485.5,435.2266,1489.5,425.2266,1485.5,429.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1727" x2="1870.5" y1="413.2266" y2="413.2266"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1870.5" x2="1870.5" y1="413.2266" y2="435.2266"/><polygon fill="#A80036" points="1866.5,425.2266,1870.5,435.2266,1874.5,425.2266,1870.5,429.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1678" x2="1678" y1="366.2266" y2="401.2266"/><polygon fill="#A80036" points="1674,391.2266,1678,401.2266,1682,391.2266,1678,395.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="977.1563" x2="382.3125" y1="256.2891" y2="256.2891"/><line style="stroke:#A80036;stroke-width:1.5;" x1="382.3125" x2="382.3125" y1="256.2891" y2="278.2891"/><polygon fill="#A80036" points="378.3125,268.2891,382.3125,278.2891,386.3125,268.2891,382.3125,272.2891" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1083.1563" x2="1678" y1="256.2891" y2="256.2891"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1678" x2="1678" y1="256.2891" y2="278.2891"/><polygon fill="#A80036" points="1674,268.2891,1678,278.2891,1682,268.2891,1678,272.2891" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.5;" x1="1030.1563" x2="1030.1563" y1="224.2891" y2="244.2891"/><polygon fill="#A80036" points="1026.1563,234.2891,1030.1563,244.2891,1034.1563,234.2891,1030.1563,238.2891" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[0d93255baaf24a0a28dc7ef7ea7317aa] 2@startuml 3title Proactive Authentication in Peripheral Role 4start 5: A connects to B; 6: SM checks if LTK available; 7note right 8 SM actions triggered by 9 connection complete 10 (independent from GATT Client) 11end note 12: App triggers GATT Client request on A; 13if (LTK available?) then (no) 14 : GATT Client request sent; 15 if (GATT Server returns an ATT_ERROR_INSUFFICIENT_X error?) then (no) 16 #23DB2B : App receives GATT Response; 17 stop 18 else (yes) 19 if (ENABLE_GATT_CLIENT_PAIRING defined?) then (no) 20 #FD5B41: App receives GATT_QUERY_COMPLETE event 21 with ATT_ERROR_INSUFFICIENT_X; 22 stop 23 else (yes) 24 : SM_EVENT_PAIRING_STARTED; 25 : start pairing; 26 if (pairing success?) then (yes) 27 : SM_EVENT_PAIRING_COMPLETE(ERROR_CODE_SUCCESS); 28 : GATT Client request re-sent; 29 #23DB2B : App receives GATT Response; 30 stop 31 else (no) 32 : SM_EVENT_PAIRING_COMPLETE(error); 33 #FD5B41: App receives GATT_QUERY_COMPLETE event 34 with ATT_ERROR_INSUFFICIENT_X; 35 stop 36 endif 37 endif 38 endif 39else (yes) 40 : SM_EVENT_REENCRYPTION_STARTED; 41 : start encryption; 42 if (re-encrypted) then (yes) 43 : SM_EVENT_REENCRYPTION_COMPLETE(ERROR_CODE_SUCCESS); 44 : GATT Client request sent; 45 #23DB2B : App receives GATT Response; 46 stop 47 else (no) 48 : SM_EVENT_REENCRYPTION_COMPLETE(error); 49 #FD5B41: App receives GATT_QUERY_COMPLETE event 50 with ATT_ERROR_BONDING_INFORMATION_MISSING; 51 stop 52 note right 53 App can delete bonding 54 information and repeat 55 the GATT Client request 56 end note 57 endif 58endif 59@enduml 60 61PlantUML version 1.2020.22(Sun Dec 06 09:36:27 UTC 2020) 62(GPL source distribution) 63Java Runtime: Java(TM) SE Runtime Environment 64JVM: Java HotSpot(TM) 64-Bit Server VM 65Default Encoding: UTF-8 66Language: en 67Country: US 68--></g></svg>