Added better bad mac logs

This commit is contained in:
emad-salah 2021-07-11 23:30:23 +01:00
parent 126003f0ef
commit 17c79f3868

View file

@ -1,6 +1,7 @@
/** @format */ /** @format */
const ECCrypto = require('eccrypto') const ECCrypto = require('eccrypto')
const Storage = require('node-persist') const Storage = require('node-persist')
const logger = require('winston')
const FieldError = require('../fieldError') const FieldError = require('../fieldError')
const { const {
convertBufferToBase64, convertBufferToBase64,
@ -39,21 +40,35 @@ const isEncryptedMessage = message =>
* @param {string} deviceId * @param {string} deviceId
*/ */
const generateKeyPair = deviceId => { const generateKeyPair = deviceId => {
const privateKey = ECCrypto.generatePrivate() try {
const publicKey = ECCrypto.getPublic(privateKey) const privateKey = ECCrypto.generatePrivate()
const privateKeyBase64 = convertBufferToBase64(privateKey) const publicKey = ECCrypto.getPublic(privateKey)
const publicKeyBase64 = convertBufferToBase64(publicKey) const privateKeyBase64 = convertBufferToBase64(privateKey)
const publicKeyBase64 = convertBufferToBase64(publicKey)
nodeKeyPairs.set(deviceId, { if (!Buffer.isBuffer(privateKey) || !Buffer.isBuffer(publicKey)) {
privateKey, throw new Error('Invalid KeyPair Generated')
publicKey }
})
return { nodeKeyPairs.set(deviceId, {
privateKey, privateKey,
publicKey, publicKey
privateKeyBase64, })
publicKeyBase64
return {
privateKey,
publicKey,
privateKeyBase64,
publicKeyBase64
}
} catch (err) {
logger.error(
'[ENCRYPTION] An error has occurred while generating a new KeyPair',
err
)
logger.error('Device ID:', deviceId)
throw err
} }
} }
@ -119,9 +134,8 @@ const encryptMessage = async ({ message = '', deviceId }) => {
* @param {{ encryptedMessage: EncryptedMessage, deviceId: string }} arg0 * @param {{ encryptedMessage: EncryptedMessage, deviceId: string }} arg0
*/ */
const decryptMessage = async ({ encryptedMessage, deviceId }) => { const decryptMessage = async ({ encryptedMessage, deviceId }) => {
const keyPair = nodeKeyPairs.get(deviceId)
try { try {
const keyPair = nodeKeyPairs.get(deviceId)
if (!keyPair) { if (!keyPair) {
throw new FieldError({ throw new FieldError({
field: 'deviceId', field: 'deviceId',
@ -141,7 +155,8 @@ const decryptMessage = async ({ encryptedMessage, deviceId }) => {
console.error( console.error(
'Bad Mac!', 'Bad Mac!',
err, err,
convertToEncryptedMessage(encryptedMessage) convertToEncryptedMessage(encryptedMessage),
!!keyPair
) )
} }