Merge pull request #418 from shocknet/bug/bad-mac-logs

bug/bad-mac-logs
This commit is contained in:
CapDog 2021-07-22 15:51:29 -04:00 committed by GitHub
commit 6de0adb7bd

View file

@ -40,21 +40,35 @@ const isEncryptedMessage = message =>
* @param {string} deviceId
*/
const generateKeyPair = deviceId => {
const privateKey = ECCrypto.generatePrivate()
const publicKey = ECCrypto.getPublic(privateKey)
const privateKeyBase64 = convertBufferToBase64(privateKey)
const publicKeyBase64 = convertBufferToBase64(publicKey)
try {
const privateKey = ECCrypto.generatePrivate()
const publicKey = ECCrypto.getPublic(privateKey)
const privateKeyBase64 = convertBufferToBase64(privateKey)
const publicKeyBase64 = convertBufferToBase64(publicKey)
nodeKeyPairs.set(deviceId, {
privateKey,
publicKey
})
if (!Buffer.isBuffer(privateKey) || !Buffer.isBuffer(publicKey)) {
throw new Error('Invalid KeyPair Generated')
}
return {
privateKey,
publicKey,
privateKeyBase64,
publicKeyBase64
nodeKeyPairs.set(deviceId, {
privateKey,
publicKey
})
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
}
}
@ -120,9 +134,8 @@ const encryptMessage = async ({ message = '', deviceId }) => {
* @param {{ encryptedMessage: EncryptedMessage, deviceId: string }} arg0
*/
const decryptMessage = async ({ encryptedMessage, deviceId }) => {
const keyPair = nodeKeyPairs.get(deviceId)
try {
const keyPair = nodeKeyPairs.get(deviceId)
if (!keyPair) {
throw new FieldError({
field: 'deviceId',
@ -138,7 +151,14 @@ const decryptMessage = async ({ encryptedMessage, deviceId }) => {
const parsedMessage = decryptedMessage.toString('utf8')
return parsedMessage
} catch (err) {
logger.error(err)
if (err.message?.toLowerCase() === 'bad mac') {
logger.error(
'Bad Mac!',
err,
convertToEncryptedMessage(encryptedMessage),
!!keyPair
)
}
throw err
}
}