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