Browse Source

change key for tribes in remote_text_map and media_key_map

feature/dockerfile-arm
Evan Feenstra 4 years ago
parent
commit
cd0a496972
  1. 12
      api/network/modify.ts
  2. 16
      api/utils/msg.ts
  3. 10
      dist/api/network/modify.js
  4. 2
      dist/api/network/modify.js.map
  5. 16
      dist/api/utils/msg.js
  6. 2
      dist/api/utils/msg.js.map

12
api/network/modify.ts

@ -12,7 +12,6 @@ const msgtypes = constants.message_types
export async function modifyPayload(payload, chat) {
if(payload.type===msgtypes.attachment) {
console.log("MODIFY, ", payload)
const mt = payload.message && payload.message.mediaToken
const key = payload.message && payload.message.mediaKey
@ -20,7 +19,6 @@ export async function modifyPayload(payload, chat) {
if(!mt || !key) return payload
const terms = parseLDAT(mt)
console.log("[modify] terms", terms)
if(!terms.host) return payload
try {
@ -28,21 +26,16 @@ export async function modifyPayload(payload, chat) {
headers: {'Authorization': `Bearer ${meme.mediaToken}`}
})
const buf = await r.buffer()
console.log("[modify] buf.length", buf.length) // "Unauthorized"
const decMediaKey = rsa.decrypt(chat.groupPrivateKey, key)
console.log("[modify] decMediaKey", decMediaKey)
const imgBase64 = RNCryptor.Decrypt(decMediaKey, buf.toString('base64'))
console.log("[modify] imgBase64.length", imgBase64.length)
const newKey = crypto.randomBytes(20).toString('hex')
const encImg = RNCryptor.Encrypt(newKey, imgBase64)
console.log("[modify] encImg.length", encImg.length)
var encImgBuffer = Buffer.from(encImg,'base64');
console.log("[modify] encImgBuffer.length", encImgBuffer.length)
const form = new FormData()
form.append('file', encImgBuffer, {
@ -54,14 +47,13 @@ export async function modifyPayload(payload, chat) {
const resp = await fetch(`https://${terms.host}/file`, {
method: 'POST',
headers: {
...formHeaders,
...formHeaders, // THIS IS REQUIRED!!!
'Authorization': `Bearer ${meme.mediaToken}`,
},
body:form
})
let json = await resp.json()
console.log("[modify] post json", json)
if(!json.muid) return payload
// PUT NEW TERMS, to finish in personalizeMessage
@ -72,10 +64,8 @@ export async function modifyPayload(payload, chat) {
meta:{...amt && {amt}},
skipSigning: amt ? true : false // only sign if its free
}
console.log("[modify] new terms", mediaTerms)
const encKey = rsa.encrypt(chat.groupKey, newKey)
console.log("[modify] new encKey", encKey)
return fillmsg(payload, {mediaTerms,mediaKey:encKey}) // key is re-encrypted later
} catch(e) {

16
api/utils/msg.ts

@ -10,8 +10,8 @@ function addInRemoteText(full:{[k:string]:any}, contactId, isTribe:boolean){
if (!(typeof m.content==='object')) return full
if(isTribe) {
// if just one, send it (for tribe remote_text_map... is there a better way?)
if(Object.values(m.content).length===1) {
return fillmsg(full, {content: Object.values(m.content)[0]})
if(m.content['chat']) {
return fillmsg(full, {content: m.content['chat']})
}
}
return fillmsg(full, {content: m.content[contactId+'']})
@ -67,8 +67,8 @@ function addInMediaKey(full:{[k:string]:any}, contactId, isTribe:boolean){
if (!(typeof m.mediaKey==='object')) return full
if(isTribe) {
if(Object.values(m.mediaKey).length===1) {
const tribeMediaKey = m.mediaTerms.skipSigning?'':Object.values(m.mediaKey)[0]
if(m.mediaKey['chat']) { // "chat" is the key for tribes
const tribeMediaKey = m.mediaTerms.skipSigning?'':m.mediaKey['chat']
return fillmsg(full, {mediaKey:tribeMediaKey})
}
}
@ -108,8 +108,8 @@ async function decryptMessage(full:{[k:string]:any}, chat) {
if(m.content) {
let content = m.content
if(typeof m.content==='object') {
if(Object.values(m.content).length) {
content = Object.values(m.content)[0]
if(m.content['chat']) {
content = m.content['chat']
}
}
const decContent = rsa.decrypt(chat.groupPrivateKey, content)
@ -118,8 +118,8 @@ async function decryptMessage(full:{[k:string]:any}, chat) {
if (m.mediaKey) {
let mediaKey = m.mediaKey
if(typeof m.mediaKey==='object') {
if(Object.values(m.mediaKey).length) {
mediaKey = Object.values(m.mediaKey)[0]
if(m.mediaKey['chat']) {
mediaKey = m.mediaKey['chat']
}
}
const decMediaKey = rsa.decrypt(chat.groupPrivateKey, mediaKey)

10
dist/api/network/modify.js

@ -22,14 +22,12 @@ const msgtypes = constants.message_types;
function modifyPayload(payload, chat) {
return __awaiter(this, void 0, void 0, function* () {
if (payload.type === msgtypes.attachment) {
console.log("MODIFY, ", payload);
const mt = payload.message && payload.message.mediaToken;
const key = payload.message && payload.message.mediaKey;
const typ = payload.message && payload.message.mediaType;
if (!mt || !key)
return payload;
const terms = ldat_1.parseLDAT(mt);
console.log("[modify] terms", terms);
if (!terms.host)
return payload;
try {
@ -37,16 +35,11 @@ function modifyPayload(payload, chat) {
headers: { 'Authorization': `Bearer ${meme.mediaToken}` }
});
const buf = yield r.buffer();
console.log("[modify] buf.length", buf.length); // "Unauthorized"
const decMediaKey = rsa.decrypt(chat.groupPrivateKey, key);
console.log("[modify] decMediaKey", decMediaKey);
const imgBase64 = rncryptor_1.default.Decrypt(decMediaKey, buf.toString('base64'));
console.log("[modify] imgBase64.length", imgBase64.length);
const newKey = crypto.randomBytes(20).toString('hex');
const encImg = rncryptor_1.default.Encrypt(newKey, imgBase64);
console.log("[modify] encImg.length", encImg.length);
var encImgBuffer = Buffer.from(encImg, 'base64');
console.log("[modify] encImgBuffer.length", encImgBuffer.length);
const form = new FormData();
form.append('file', encImgBuffer, {
contentType: typ || 'image/jpg',
@ -60,7 +53,6 @@ function modifyPayload(payload, chat) {
body: form
});
let json = yield resp.json();
console.log("[modify] post json", json);
if (!json.muid)
return payload;
// PUT NEW TERMS, to finish in personalizeMessage
@ -71,9 +63,7 @@ function modifyPayload(payload, chat) {
meta: Object.assign({}, amt && { amt }),
skipSigning: amt ? true : false // only sign if its free
};
console.log("[modify] new terms", mediaTerms);
const encKey = rsa.encrypt(chat.groupKey, newKey);
console.log("[modify] new encKey", encKey);
return fillmsg(payload, { mediaTerms, mediaKey: encKey }); // key is re-encrypted later
}
catch (e) {

2
dist/api/network/modify.js.map

@ -1 +1 @@
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../api/network/modify.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../api/network/modify.ts"],"names":[],"mappings":"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"}

16
dist/api/utils/msg.js

@ -21,8 +21,8 @@ function addInRemoteText(full, contactId, isTribe) {
return full;
if (isTribe) {
// if just one, send it (for tribe remote_text_map... is there a better way?)
if (Object.values(m.content).length === 1) {
return fillmsg(full, { content: Object.values(m.content)[0] });
if (m.content['chat']) {
return fillmsg(full, { content: m.content['chat'] });
}
}
return fillmsg(full, { content: m.content[contactId + ''] });
@ -80,8 +80,8 @@ function addInMediaKey(full, contactId, isTribe) {
if (!(typeof m.mediaKey === 'object'))
return full;
if (isTribe) {
if (Object.values(m.mediaKey).length === 1) {
const tribeMediaKey = m.mediaTerms.skipSigning ? '' : Object.values(m.mediaKey)[0];
if (m.mediaKey['chat']) { // "chat" is the key for tribes
const tribeMediaKey = m.mediaTerms.skipSigning ? '' : m.mediaKey['chat'];
return fillmsg(full, { mediaKey: tribeMediaKey });
}
}
@ -123,8 +123,8 @@ function decryptMessage(full, chat) {
if (m.content) {
let content = m.content;
if (typeof m.content === 'object') {
if (Object.values(m.content).length) {
content = Object.values(m.content)[0];
if (m.content['chat']) {
content = m.content['chat'];
}
}
const decContent = rsa.decrypt(chat.groupPrivateKey, content);
@ -133,8 +133,8 @@ function decryptMessage(full, chat) {
if (m.mediaKey) {
let mediaKey = m.mediaKey;
if (typeof m.mediaKey === 'object') {
if (Object.values(m.mediaKey).length) {
mediaKey = Object.values(m.mediaKey)[0];
if (m.mediaKey['chat']) {
mediaKey = m.mediaKey['chat'];
}
}
const decMediaKey = rsa.decrypt(chat.groupPrivateKey, mediaKey);

2
dist/api/utils/msg.js.map

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save