Skip to content

Commit

Permalink
fix: encrypting secret when not necessary
Browse files Browse the repository at this point in the history
  • Loading branch information
strykerin committed Oct 20, 2023
1 parent 6729e14 commit d6134e0
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 25 deletions.
7 changes: 5 additions & 2 deletions packages/restapi/src/lib/chat/approveRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,14 @@ export const approve = async (

const connectedUser = await getConnectedUserV2(wallet, pgpPrivateKey, env);

let fromDID = await getUserDID(senderAddress, env);
let toDID = await getUserDID(address, env);
let fromDID: string;
let toDID: string;
if (isGroup) {
fromDID = await getUserDID(address, env);
toDID = await getUserDID(senderAddress, env);
} else {
fromDID = await getUserDID(senderAddress, env);
toDID = await getUserDID(address, env);
}

const bodyToBeHashed = {
Expand Down
16 changes: 12 additions & 4 deletions packages/restapi/src/lib/chat/helpers/crypto.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-nocheck
import * as PGP from './pgp';
import * as AES from './aes';
import * as CryptoJS from 'crypto-js';
Expand Down Expand Up @@ -51,11 +53,13 @@ export const encryptAndSign = async ({
keys,
privateKeyArmored,
secretKey,
encryptSecret = true
}: {
plainText: string;
keys: Array<string>;
privateKeyArmored: string;
secretKey: string;
encryptSecret: boolean
}): Promise<{
cipherText: string;
encryptedSecret: string;
Expand All @@ -64,10 +68,13 @@ export const encryptAndSign = async ({
encType: string;
}> => {
const cipherText: string = AES.aesEncrypt({ plainText, secretKey });
const encryptedSecret = await PGP.pgpEncrypt({
plainText: secretKey,
keys: keys,
});
let encryptedSecret: string | null = null
if (encryptSecret) {
encryptedSecret = await PGP.pgpEncrypt({
plainText: secretKey,
keys: keys,
});
}
const signature: string = await PGP.sign({
message: cipherText,
signingKey: privateKeyArmored,
Expand Down Expand Up @@ -284,6 +291,7 @@ export const getEncryptedRequest = async (
keys: publicKeys,
privateKeyArmored: senderCreatedUser.privateKey!,
secretKey,
encryptSecret: false
});
let encryptionType: 'PlainText' | 'pgp' | 'group-v1';
if (newGroupEncryption) encryptionType = 'group-v1';
Expand Down
35 changes: 16 additions & 19 deletions packages/restapi/src/lib/chat/helpers/payloadHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,31 +112,28 @@ export const sendMessagePayload = async (
secretKey = AES.generateRandomSecret(15);
}

const { message: encryptedMessageContent, signature: deprecatedSignature } =
await getEncryptedRequest(
receiverAddress,
senderCreatedUser,
messageContent,
isGroup,
env,
group,
secretKey,
newGroupEncryption
);
const {
message: encryptedMessageObj,
encryptionType,
aesEncryptedSecret,
} = await getEncryptedRequest(
receiverAddress,
const promise1= getEncryptedRequest(receiverAddress,
senderCreatedUser,
messageContent,
isGroup,
env,
group,
secretKey,
newGroupEncryption)
const promise2= getEncryptedRequest(receiverAddress,
senderCreatedUser,
JSON.stringify(messageObj),
isGroup,
env,
group,
secretKey,
newGroupEncryption
);
newGroupEncryption)
const result = await Promise.all([promise1, promise2])
const encryptedMessageContent = result[0].message
const deprecatedSignature = result[0].signature
const encryptedMessageObj = result[1].message
const encryptionType = result[1].encryptionType
const aesEncryptedSecret = result[1].aesEncryptedSecret

const body: ISendMessagePayload = {
fromDID: walletToPCAIP10(senderCreatedUser.wallets.split(',')[0]),
Expand Down

0 comments on commit d6134e0

Please sign in to comment.