Fix attachments
This commit is contained in:
parent
3103eaa192
commit
07a23f0759
3 changed files with 19 additions and 7 deletions
|
@ -192,16 +192,15 @@ var API = new function() {
|
|||
urlParameters : '/' + id,
|
||||
do_auth : true,
|
||||
}).then(function(response) {
|
||||
console.log(response);
|
||||
return new Promise(function(resolve, reject) {
|
||||
$.ajax(response.location, {
|
||||
type : "GET",
|
||||
xhrFields: {
|
||||
responseType: "arraybuffer"
|
||||
},
|
||||
/*headers: {
|
||||
headers: {
|
||||
"Content-Type": "application/octet-stream"
|
||||
},*/
|
||||
},
|
||||
|
||||
success : function(response, textStatus, jqXHR) {
|
||||
resolve(response);
|
||||
|
|
17
js/crypto.js
17
js/crypto.js
|
@ -283,6 +283,19 @@ window.crypto = (function() {
|
|||
});
|
||||
}
|
||||
|
||||
var calculateMAC = function(data, key) {
|
||||
return HmacSHA256(key, data);
|
||||
}
|
||||
|
||||
var verifyMAC = function(data, key, mac) {
|
||||
return calculateMAC(data, key).then(function(calculated_mac) {
|
||||
var macString = getString(mac);//TODO: Move away from strings for comparison?
|
||||
|
||||
if (getString(calculated_mac).substring(0, macString.length) != macString)
|
||||
throw new Error("Bad MAC");
|
||||
});
|
||||
}
|
||||
|
||||
/******************************
|
||||
*** Ratchet implementation ***
|
||||
******************************/
|
||||
|
@ -547,8 +560,8 @@ window.crypto = (function() {
|
|||
};
|
||||
|
||||
crypto.decryptAttachment = function(encryptedBin, keys) {
|
||||
var aes_key = key.slice(0, 32);
|
||||
var mac_key = key.slice(32, 64);
|
||||
var aes_key = keys.slice(0, 32);
|
||||
var mac_key = keys.slice(32, 64);
|
||||
|
||||
var iv = encryptedBin.slice(0, 32);
|
||||
var ciphertext = encryptedBin.slice(32, encryptedBin.byteLength - 32);
|
||||
|
|
|
@ -321,7 +321,7 @@ function storeMessage(messageObject) {
|
|||
messageMap[messageObject.pushMessage.source] = conversation;
|
||||
}
|
||||
|
||||
conversation[conversation.length] = { message: getString(messageObject.message.body),
|
||||
conversation[conversation.length] = { message: messageObject.message.body != null && getString(messageObject.message.body),
|
||||
sender: messageObject.pushMessage.source,
|
||||
timestamp: messageObject.pushMessage.timestamp.div(dcodeIO.Long.fromNumber(1000)).toNumber() };
|
||||
storage.putEncrypted("messageMap", messageMap);
|
||||
|
@ -465,7 +465,7 @@ function subscribeToPush(message_callback) {
|
|||
return crypto.handleIncomingPushMessageProto(proto).then(function(decrypted) {
|
||||
var handleAttachment = function(attachment) {
|
||||
return API.getAttachment(attachment.id).then(function(encryptedBin) {
|
||||
return crypto.decryptAttachment(encryptedBin, attachment.key).then(function(decryptedBin) {
|
||||
return crypto.decryptAttachment(encryptedBin, toArrayBuffer(attachment.key)).then(function(decryptedBin) {
|
||||
attachment.decrypted = decryptedBin;
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue