-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Description
Inconsistent Error Handling in Encryption/Decryption Functions
Problem
The decryptFile
function returns undefined
on error instead of throwing an exception, causing silent failures.
Current Code
// ❌ BAD: Returns undefined on error
const decryptFile = async (cipher: any, password: any) => {
try {
// ... decryption logic
return decryptedContent
} catch (error) {
console.error('Error decrypting file')
console.error(error)
return // Returns undefined!
}
}
Impact
- Silent failures in production
- Difficult debugging
- Runtime errors when calling code expects data but gets
undefined
- No distinction between wrong password vs corrupted data
Solution
1. Create Error Classes
// src/errors/EncryptionErrors.ts
export class DecryptionError extends Error { }
export class InvalidPasswordError extends DecryptionError { }
export class CorruptedDataError extends DecryptionError { }
2. Fix decryptFile Function
const decryptFile = async (cipher: any, password: any) => {
try {
// ... decryption logic
return decryptedContent
} catch (error) {
if (error.name === 'OperationError') {
throw new InvalidPasswordError('Invalid password');
}
throw new DecryptionError('Decryption failed', error);
}
}
3. Update Calling Code
// Before
const data = await decryptFile(cipher, password);
if (!data) { /* handle error */ }
// After
try {
const data = await decryptFile(cipher, password);
} catch (error) {
if (error instanceof InvalidPasswordError) {
// Handle wrong password
}
// Handle other errors
}
Affected Files
src/Lighthouse/uploadEncrypted/encryptionNode.ts
src/Lighthouse/uploadEncrypted/encryptionBrowser.ts
- All files calling
decryptFile
Breaking Change
This changes decryptFile
from returning undefined
to throwing errors. All calling code must be updated.
Metadata
Metadata
Assignees
Labels
No labels