thali
Version:
925 lines (295 loc) • 18.2 kB
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"> → {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.<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"> → {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"> → {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"> → {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>