Fix attachments
This commit is contained in:
@@ -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;
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user