qtools-secure-container
v0.0.30
Published
An encrypted file format that is more transparent and useful than a zip file.
Readme
qtools-secure-container
An encrypted file format that is more transparent and useful than a zip file.
Security
Uses hybrid encryption:
- AES-256-CBC for symmetric data encryption
- RSA-OAEP with SHA-256 for key wrapping
As of v0.0.29, encryption/decryption uses in-memory streaming. No unencrypted intermediate files are written to disk, eliminating the temp file exposure vulnerability present in earlier versions.
Installation
npm install qtools-secure-containerUsage
const secureContainerGen = require('qtools-secure-container');
// Initialize with a PEM key (private key for both encrypt/decrypt, or public for encrypt-only)
secureContainerGen({ rsaKeyPem: yourKeyPem }, (err, { wrapFile, unwrapFile }) => {
// Encrypt a file
wrapFile({ inFilePath: '/path/to/file.pdf', outFilePath: '/path/to/file.container' }, (err, result) => {
console.log('Encrypted:', result.outFilePath);
});
// Decrypt a file
unwrapFile({ inFilePath: '/path/to/file.container', outputDirPath: '/path/to/output/' }, (err, result) => {
console.log('Decrypted:', result.resultFilePath);
});
});Testing
npm test # Roundtrip test on package.json
npm run test:roundtrip <file> # Test specific file
npm run test:wrap <in> <out> # Encrypt only
npm run test:unwrap <in> <dir> # Decrypt onlyChangelog
v0.0.30
- Switched to streaming encryption/decryption
- No unencrypted temp files written to disk during processing
- Backward compatible with containers created by earlier versions
v0.0.28
- Migrated from node-rsa to native Node.js crypto module
- Uses RSA-OAEP with SHA-256 padding
License
ISC
