UNPKG

thali

Version:
925 lines (295 loc) 18.2 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Module: thaliNotificationBeacons</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Module: thaliNotificationBeacons</h1> <section> <header> </header> <article> <div class="container-overview"> </div> <h3 class="subsection-title">Classes</h3> <dl> <dt><a href="module-thaliNotificationBeacons-ParseBeaconsResponse.html">ParseBeaconsResponse</a></dt> <dd></dd> </dl> <h3 class="subsection-title">Methods</h3> <h4 class="name" id=".generatePreambleAndBeacons"><span class="type-signature">(static) </span>generatePreambleAndBeacons<span class="signature">(publicKeysToNotify, ecdhForLocalDevice, secondsUntilExpiration)</span><span class="type-signature"> &rarr; {Buffer}</span></h4> <div class="description"> <p>This function will generate a buffer containing the notification preamble and beacons for the given set of public keys using the supplied private key and set to the specified seconds until expiration.</p> </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>publicKeysToNotify</code></td> <td class="type"> <span class="param-type">Array.&lt;string></span> </td> <td class="description last"><p>An array of strings holding base64 url safe encoded ECDH public keys</p></td> </tr> <tr> <td class="name"><code>ecdhForLocalDevice</code></td> <td class="type"> <span class="param-type">ECDH</span> </td> <td class="description last"><p>A Crypto.ECDH object initialized with the local device's public and private keys</p></td> </tr> <tr> <td class="name"><code>secondsUntilExpiration</code></td> <td class="type"> <span class="param-type">number</span> </td> <td class="description last"><p>The number of seconds into the future after which the beacons should expire.</p></td> </tr> </tbody> </table> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="thaliNotificationBeacons.js.html">thaliNotificationBeacons.js</a>, <a href="thaliNotificationBeacons.js.html#line25">line 25</a> </li></ul></dd> </dl> <h5>Returns:</h5> <div class="param-desc"> <ul> <li>A buffer containing the serialized preamble and beacons</li> </ul> </div> <dl> <dt> Type </dt> <dd> <span class="param-type">Buffer</span> </dd> </dl> <h4 class="name" id=".parseBeacons"><span class="type-signature">(static) </span>parseBeacons<span class="signature">(beaconStreamWithPreAmble, ecdhForLocalDevice, addressBookCallback)</span><span class="type-signature"> &rarr; {ParseBeaconsResponse}</span></h4> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>beaconStreamWithPreAmble</code></td> <td class="type"> <span class="param-type">Buffer</span> </td> <td class="description last"><p>A buffer stream containing the preamble and beacons</p></td> </tr> <tr> <td class="name"><code>ecdhForLocalDevice</code></td> <td class="type"> <span class="param-type">Crypto.ECDH</span> </td> <td class="description last"><p>A Crypto.ECDH object initialized with the local device's public and private keys</p></td> </tr> <tr> <td class="name"><code>addressBookCallback</code></td> <td class="type"> <span class="param-type">addressBookCallback</span> </td> <td class="description last"><p>A callback used by the function to determine if the identified remote peer's public key hash represents a remote peer the local peer wishes to communicate with.</p></td> </tr> </tbody> </table> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="thaliNotificationBeacons.js.html">thaliNotificationBeacons.js</a>, <a href="thaliNotificationBeacons.js.html#line151">line 151</a> </li></ul></dd> </dl> <h5>Returns:</h5> <div class="param-desc"> <ul> <li>Null if none of the beacons could be validated as being targeted at the local peer or if the beacon came from a remote peer the local peer does not wish to communicate with. Otherwise a .</li> </ul> </div> <dl> <dt> Type </dt> <dd> <span class="param-type">ParseBeaconsResponse</span> </dd> </dl> <h4 class="name" id="~generateBeacon"><span class="type-signature">(inner) </span>generateBeacon<span class="signature">(publicKey, ecdhWithPrivateKey, IV, Ke, expirationValue)</span><span class="type-signature"> &rarr; {Buffer}</span></h4> <div class="description"> <p>Generates a single beacon using the specified values.</p> </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>publicKey</code></td> <td class="type"> <span class="param-type">string</span> </td> <td class="description last"><p>This is a base64 url safe encoded public key we need to create a beacon for</p></td> </tr> <tr> <td class="name"><code>ecdhWithPrivateKey</code></td> <td class="type"> <span class="param-type">ECDH</span> </td> <td class="description last"><p>A Crypto.ECDH object initialized with the local device's public and private keys</p></td> </tr> <tr> <td class="name"><code>IV</code></td> <td class="type"> <span class="param-type">Buffer</span> </td> <td class="description last"><p>The IV to use for this beacon (we use the same IV for all beacons)</p></td> </tr> <tr> <td class="name"><code>Ke</code></td> <td class="type"> <span class="param-type">ECDH</span> </td> <td class="description last"><p>A Crypto.ECDH object initialized with the public and private ephemeral key</p></td> </tr> <tr> <td class="name"><code>expirationValue</code></td> <td class="type"> <span class="param-type">Buffer</span> </td> <td class="description last"><p>The calculated expirationValue used the pre-amble that pairs with this beacon</p></td> </tr> </tbody> </table> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="thaliNotificationBeacons.js.html">thaliNotificationBeacons.js</a>, <a href="thaliNotificationBeacons.js.html#line57">line 57</a> </li></ul></dd> </dl> <h5>Returns:</h5> <div class="param-desc"> <ul> <li>A buffer containing the beacon</li> </ul> </div> <dl> <dt> Type </dt> <dd> <span class="param-type">Buffer</span> </dd> </dl> <h3 class="subsection-title">Type Definitions</h3> <h4 class="name" id="~addressBookCallback"><span class="type-signature"></span>addressBookCallback<span class="signature">(unencryptedKeyId)</span><span class="type-signature"> &rarr; {string}</span></h4> <div class="description"> <p>This callback is used to lookup if the public key hash retrieved from a notification beacon belongs to a peer that the local peer wishes to talk to. If not the callback will return null. If so then the callback will return the full public key for the remote peer. In other words, there is an explicit assumption that the caller has an address book mapping hashes of public keys with the full public keys. The hashes are in the beacon and this function is used to retrieve the full public key so that the beacon validation process can complete.</p> </div> <h5>Parameters:</h5> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>unencryptedKeyId</code></td> <td class="type"> <span class="param-type">Buffer</span> </td> <td class="description last"><p>This is a Buffer containing the unencryptedKeId.</p></td> </tr> </tbody> </table> <dl class="details"> <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="thaliNotificationBeacons.js.html">thaliNotificationBeacons.js</a>, <a href="thaliNotificationBeacons.js.html#line62">line 62</a> </li></ul></dd> </dl> <h5>Returns:</h5> <div class="param-desc"> <ul> <li>The base64 url safe encoded public key associated with the unecryptedKeyId or null if the remote peer is not one the local peer recognizes or wishes to communicate with.</li> </ul> </div> <dl> <dt> Type </dt> <dd> <span class="param-type">string</span> </dd> </dl> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-TCPServersManager.html">TCPServersManager</a></li><li><a href="module-thaliMobile.html">thaliMobile</a></li><li><a href="module-thaliMobileNative.html">thaliMobileNative</a></li><li><a href="module-thaliMobileNativeWrapper.html">thaliMobileNativeWrapper</a></li><li><a href="module-thaliNotificationAction.html">thaliNotificationAction</a></li><li><a href="module-thaliNotificationBeacons.html">thaliNotificationBeacons</a></li><li><a href="module-thaliNotificationClient.html">thaliNotificationClient</a></li><li><a href="module-thaliNotificationServer.html">thaliNotificationServer</a></li><li><a href="module-thaliPeerAction.html">thaliPeerAction</a></li><li><a href="module-thaliPeerDictionary.html">thaliPeerDictionary</a></li><li><a href="module-thaliPeerPoolInterface.html">thaliPeerPoolInterface</a></li><li><a href="module-ThaliWifiInfrastructure.html">ThaliWifiInfrastructure</a></li><li><a href="module-WifiBasedNativeMock.html">WifiBasedNativeMock</a></li></ul><h3>Externals</h3><ul><li><a href="external-_Mobile(_connect_)_.html">Mobile('connect')</a></li><li><a href="external-_Mobile(_discoveryAdvertisingStateUpdateNonTCP_)_.html">Mobile('discoveryAdvertisingStateUpdateNonTCP')</a></li><li><a href="external-_Mobile(_incomingConnectionToPortNumberFailed_)_.html">Mobile('incomingConnectionToPortNumberFailed')</a></li><li><a href="external-_Mobile(_killConnections_)_.html">Mobile('killConnections')</a></li><li><a href="external-_Mobile(_networkChanged_)_.html">Mobile('networkChanged')</a></li><li><a href="external-_Mobile(_peerAvailabilityChanged_)_.html">Mobile('peerAvailabilityChanged')</a></li><li><a href="external-_Mobile(_startListeningForAdvertisements_)_.html">Mobile('startListeningForAdvertisements')</a></li><li><a href="external-_Mobile(_startUpdateAdvertisingAndListening_)_.html">Mobile('startUpdateAdvertisingAndListening')</a></li><li><a href="external-_Mobile(_stopAdvertisingAndListening_)_.html">Mobile('stopAdvertisingAndListening')</a></li><li><a href="external-_Mobile(_stopListeningForAdvertisements_)_.html">Mobile('stopListeningForAdvertisements')</a></li></ul><h3>Classes</h3><ul><li><a href="ConnectionTable.html">ConnectionTable</a></li><li><a href="module-TCPServersManager-TCPServersManager.html">TCPServersManager</a></li><li><a href="module-thaliNotificationAction-NotificationAction.html">NotificationAction</a></li><li><a href="module-thaliNotificationBeacons-ParseBeaconsResponse.html">ParseBeaconsResponse</a></li><li><a href="module-thaliNotificationClient-ThaliNotificationClient.html">ThaliNotificationClient</a></li><li><a href="module-thaliNotificationServer-ThaliNotificationServer.html">ThaliNotificationServer</a></li><li><a href="module-thaliPeerAction-PeerAction.html">PeerAction</a></li><li><a href="module-thaliPeerDictionary-NotificationPeerDictionaryEntry.html">NotificationPeerDictionaryEntry</a></li><li><a href="module-thaliPeerDictionary-PeerConnectionInformation.html">PeerConnectionInformation</a></li><li><a href="module-thaliPeerDictionary-PeerDictionary.html">PeerDictionary</a></li><li><a href="module-thaliPeerPoolInterface-ThaliPeerPoolInterface.html">ThaliPeerPoolInterface</a></li><li><a href="module-ThaliWifiInfrastructure-ThaliWifiInfrastructure.html">ThaliWifiInfrastructure</a></li><li><a href="module-WifiBasedNativeMock-MobileCallInstance.html">MobileCallInstance</a></li><li><a href="module-WifiBasedNativeMock-WifiBasedNativeMock.html">WifiBasedNativeMock</a></li></ul><h3>Events</h3><ul><li><a href="module-thaliMobileNativeWrapper.html#~event:discoveryAdvertisingStateUpdateNonTCPEvent">discoveryAdvertisingStateUpdateNonTCPEvent</a></li><li><a href="module-ThaliWifiInfrastructure.html#~event:discoveryAdvertisingStateUpdateWifiEvent">discoveryAdvertisingStateUpdateWifiEvent</a></li><li><a href="module-TCPServersManager.html#~event:failedConnection">failedConnection</a></li><li><a href="module-thaliMobileNativeWrapper.html#~event:incomingConnectionToPortNumberFailed">incomingConnectionToPortNumberFailed</a></li><li><a href="module-thaliMobileNativeWrapper.html#~event:networkChangedNonTCP">networkChangedNonTCP</a></li><li><a href="module-ThaliWifiInfrastructure.html#~event:networkChangedWifi">networkChangedWifi</a></li><li><a href="module-thaliMobileNativeWrapper.html#~event:nonTCPPeerAvailabilityChangedEvent">nonTCPPeerAvailabilityChangedEvent</a></li><li><a href="module-TCPServersManager.html#~event:routerPortConnectionFailed">routerPortConnectionFailed</a></li><li><a href="module-ThaliWifiInfrastructure.html#~event:wifiPeerAvailabilityChanged">wifiPeerAvailabilityChanged</a></li><li><a href="module-thaliMobile.html#.event:event:discoveryAdvertisingStateUpdate">discoveryAdvertisingStateUpdate</a></li><li><a href="module-thaliMobile.html#.event:event:networkChanged">networkChanged</a></li><li><a href="module-thaliMobile.html#.event:event:peerAvailabilityChanged">peerAvailabilityChanged</a></li><li><a href="module-thaliNotificationAction-NotificationAction.html#.event:event:Resolved">Resolved</a></li><li><a href="module-thaliNotificationClient.html#.event:event:peerAdvertisesDataForUs">peerAdvertisesDataForUs</a></li></ul><h3>Global</h3><ul><li><a href="global.html#getPKCS12Content">getPKCS12Content</a></li><li><a href="global.html#getPublicKeyHash">getPublicKeyHash</a></li><li><a href="global.html#stopThaliReplicationManager">stopThaliReplicationManager</a></li><li><a href="global.html#ThaliEmitter">ThaliEmitter</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.0</a> on Mon Jan 18 2016 11:19:32 GMT+0200 (EET) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>