Working registration
This commit is contained in:
parent
aa8fe6f9d0
commit
7e811c2855
4 changed files with 60 additions and 51 deletions
25
helpers.js
25
helpers.js
|
@ -85,7 +85,7 @@ var storage = {};
|
|||
|
||||
storage.putEncrypted = function(key, value) {
|
||||
//TODO
|
||||
localStorage.setItem("e" + key, getString(value));
|
||||
localStorage.setItem("e" + key, JSON.stringify(getString(value)));
|
||||
}
|
||||
|
||||
storage.getEncrypted = function(key, defaultValue) {
|
||||
|
@ -93,18 +93,18 @@ storage.getEncrypted = function(key, defaultValue) {
|
|||
var value = localStorage.getItem("e" + key);
|
||||
if (value === null)
|
||||
return defaultValue;
|
||||
return value;
|
||||
return JSON.parse(value);
|
||||
}
|
||||
|
||||
storage.putUnencrypted = function(key, value) {
|
||||
localStorage.setItem("u" + key, getString(value));
|
||||
localStorage.setItem("u" + key, JSON.stringify(getString(value)));
|
||||
}
|
||||
|
||||
storage.getUnencrypted = function(key, defaultValue) {
|
||||
var value = localStorage.getItem("u" + key);
|
||||
if (value === null)
|
||||
return defaultValue;
|
||||
return value;
|
||||
return JSON.parse(value);
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
|
@ -153,10 +153,7 @@ function generateKeys() {
|
|||
|
||||
// Keep track of other's keys too
|
||||
function getDeviceObject(encodedNumber) {
|
||||
var deviceObject = storage.getEncrypted("deviceObject" + encodedNumber);
|
||||
if (deviceObject === undefined)
|
||||
return deviceObject;
|
||||
return JSON.parseJSON(deviceObject);
|
||||
return storage.getEncrypted("deviceObject" + getEncodedNumber(encodedNumber));
|
||||
}
|
||||
|
||||
function getDeviceIdListFromNumber(number) {
|
||||
|
@ -164,7 +161,7 @@ function getDeviceIdListFromNumber(number) {
|
|||
}
|
||||
|
||||
function addDeviceIdForNumber(number, deviceId) {
|
||||
var deviceIdList = JSON.parseJSON(getDeviceIdListFromNumber(getNumberFromString(number)));
|
||||
var deviceIdList = getDeviceIdListFromNumber(getNumberFromString(number));
|
||||
for (var i = 0; i < deviceIdList.length; i++) {
|
||||
if (deviceIdList[i] == deviceId)
|
||||
return;
|
||||
|
@ -176,6 +173,8 @@ function addDeviceIdForNumber(number, deviceId) {
|
|||
// throws "Identity key mismatch"
|
||||
function saveDeviceObject(deviceObject) {
|
||||
var existing = getDeviceObject(deviceObject.encodedNumber);
|
||||
if (existing === undefined)
|
||||
existing = {encodedNumber: getEncodedNumber(deviceObject.encodedNumber)};
|
||||
for (key in deviceObject) {
|
||||
if (key == "encodedNumber")
|
||||
continue;
|
||||
|
@ -185,7 +184,7 @@ function saveDeviceObject(deviceObject) {
|
|||
|
||||
existing[key] = deviceObject[key];
|
||||
}
|
||||
storage.putEncrypted("deviceObject", JSON.encode(existing));
|
||||
storage.putEncrypted("deviceObject", existing);
|
||||
addDeviceIdForNumber(deviceObject.encodedNumber, getDeviceId(deviceObject.encodedNumber));
|
||||
}
|
||||
|
||||
|
@ -246,7 +245,7 @@ var URL_CALLS = {};
|
|||
URL_CALLS['devices'] = "/v1/devices";
|
||||
URL_CALLS['keys'] = "/v1/keys";
|
||||
URL_CALLS['push'] = "/v1/messagesocket";
|
||||
URL_CALLS['messages'] = "/v1/messages";
|
||||
URL_CALLS['messages'] = "/v1/messages/";
|
||||
|
||||
/**
|
||||
* REQUIRED PARAMS:
|
||||
|
@ -292,6 +291,7 @@ function doAjax(param) {
|
|||
});
|
||||
}
|
||||
|
||||
// message_callback(decoded_protobuf) (use decodeMessage(proto))
|
||||
function subscribeToPush(message_callback) {
|
||||
var user = storage.getUnencrypted("number_id");
|
||||
var password = storage.getEncrypted("password");
|
||||
|
@ -417,5 +417,6 @@ function sendMessageToNumbers(numbers, message, success_callback, error_callback
|
|||
|
||||
|
||||
function requestIdentityPrivKeyFromMasterDevice(number, identityKey) {
|
||||
sendMessage(number, {message: "Identity Key request"}, function() {}, function() {});//TODO
|
||||
sendMessageToDevices([getDeviceObject(getNumberFromString(number)) + ".1"],
|
||||
{message: "Identity Key request"}, function() {}, function() {});//TODO
|
||||
}
|
||||
|
|
13
options.html
13
options.html
|
@ -13,15 +13,22 @@
|
|||
</div>
|
||||
<div id="verify" style="display: none;">
|
||||
<div id="verify1">Verifying number and setup code...<span id="verify1done"></span></div>
|
||||
<div id="verify2">Generating keys...<span id="verify2done"></span></div>
|
||||
<div id="verify3">Registering...<span id="verify3done"></span></div>
|
||||
<div id="verify3">Syncing with existing devices...<span id="verify4done"></span></div>
|
||||
<div id="verify3">Syncing with existing devices...<span id="verify2done"></span></div>
|
||||
<div id="verify2">Generating keys...<span id="verify3done"></span></div>
|
||||
<div id="verify3">Registering...<span id="verify4done"></span></div>
|
||||
</div>
|
||||
<div id="setup-complete" style="display: none;">
|
||||
<h2>You are now registered on TextSecure with number <span id="complete-number"></span></h2>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="jquery.atmosphere.js"></script>
|
||||
<script type="text/javascript" src="aes.js"></script>
|
||||
<script type="text/javascript" src="hmac-sha256.js"></script>
|
||||
<script type="text/javascript" src="lib-typedarrays.js"></script>
|
||||
<script type="text/javascript" src="Long.min.js"></script>
|
||||
<script type="text/javascript" src="ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="helpers.js"></script>
|
||||
<script type="text/javascript" src="options.js"></script>
|
||||
</body>
|
||||
|
|
41
options.js
41
options.js
|
@ -35,30 +35,32 @@ $('#init-go').click(function() {
|
|||
$('#verify3done').html('');
|
||||
$('#verify').show();
|
||||
|
||||
doAjax({call: 'devices', httpType: 'PUT', urlParameters: '/' + $('#code').val(), success_callback: function(response) {
|
||||
$('#verify1done').html('done');
|
||||
var keys = generateKeys();
|
||||
$('#verify2done').html('done');
|
||||
doAjax({call: 'devices', httpType: 'PUT', urlParameters: '/' + $('#code').val(), user: number, password: password,
|
||||
jsonData: {signalingKey: btoa(getString(signaling_key)), supportsSms: false, fetchesMessages: true},
|
||||
success_callback: function(response) {
|
||||
var number_id = number + "." + response;
|
||||
|
||||
storage.putUnencrypted("number_id", number_id);
|
||||
storage.putEncrypted("password", password);
|
||||
storage.putEncrypted('signaling_key', signaling_key);
|
||||
storage.putUnencrypted("number_id", number_id);
|
||||
$('#verify1done').html('done');
|
||||
|
||||
doAjax({call: 'keys', httpType: 'PUT', do_auth: true, jsonData: keys,
|
||||
success_callback: function(response) {
|
||||
getKeysForNumber(number, function(identityKey) {
|
||||
subscribeToPush(function(message) {
|
||||
//TODO receive spuhared identity key
|
||||
$('#verify2done').html('done');
|
||||
var keys = generateKeys();
|
||||
$('#verify3done').html('done');
|
||||
getKeysForNumber(number, function(identityKey) {
|
||||
get
|
||||
$('#complete-number').html(number);
|
||||
$('#verify').hide();
|
||||
$('#setup-complete').show();
|
||||
}, error_callback(error_msg) {
|
||||
alert(error_msg); //TODO
|
||||
doAjax({call: 'keys', httpType: 'PUT', do_auth: true, jsonData: keys,
|
||||
success_callback: function(response) {
|
||||
$('#verify4done').html('done');
|
||||
}, error_callback: function(code) {
|
||||
alert(code); //TODO
|
||||
}
|
||||
});
|
||||
}, error_callback: function(code) {
|
||||
alert(code); //TODO
|
||||
}
|
||||
});
|
||||
requestIdentityPrivKeyFromMasterDevice(number);
|
||||
}, function(error_msg) {
|
||||
alert(error_msg); //TODO
|
||||
});
|
||||
}, error_callback: function(code) {
|
||||
var error;
|
||||
|
@ -74,8 +76,7 @@ $('#init-go').click(function() {
|
|||
console.log("Got error code " + code);
|
||||
}
|
||||
alert(error); //TODO
|
||||
}, user: number, password: password,
|
||||
jsonData: {signalingKey: btoa(getString(signaling_key)), supportsSms: false, fetchesMessages: true}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
32
popup.html
32
popup.html
|
@ -3,22 +3,22 @@
|
|||
<script type="text/javascript" src="jquery-2.0.3.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<a id="inbox_link">Inbox</a>
|
||||
<a id="send_link">Send</a>
|
||||
<div id="inbox">
|
||||
<a id="inbox_link">Inbox</a>
|
||||
<a id="send_link">Send</a>
|
||||
<div id="inbox">
|
||||
<!-- stuff -->
|
||||
</div>
|
||||
<div id="send" style="display:none;"></div>
|
||||
|
||||
</div>
|
||||
<div id="send" style="display:none;"></div>
|
||||
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="jquery.atmosphere.js"></script>
|
||||
<script type="text/javascript" src="aes.js"></script>
|
||||
<script type="text/javascript" src="hmac-sha256.js"></script>
|
||||
<script type="text/javascript" src="lib-typedarrays.js"></script>
|
||||
<script type="text/javascript" src="Long.min.js"></script>
|
||||
<script type="text/javascript" src="ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="helpers.js"></script>
|
||||
<script type="text/javascript" src="popup.js"></script>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="jquery.atmosphere.js"></script>
|
||||
<script type="text/javascript" src="aes.js"></script>
|
||||
<script type="text/javascript" src="hmac-sha256.js"></script>
|
||||
<script type="text/javascript" src="lib-typedarrays.js"></script>
|
||||
<script type="text/javascript" src="Long.min.js"></script>
|
||||
<script type="text/javascript" src="ByteBuffer.min.js"></script>
|
||||
<script type="text/javascript" src="ProtoBuf.min.js"></script>
|
||||
<script type="text/javascript" src="helpers.js"></script>
|
||||
<script type="text/javascript" src="popup.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Add table
Reference in a new issue