Skip to content

Commit dfc76fa

Browse files
committed
Reverted development of folder encryption & decryption
Changes: - Added anti-directory checking - Made RSA Key Pair default location visually look better - Place encryption & decryption functionalities back into their Promises
1 parent f3c0991 commit dfc76fa

File tree

2 files changed

+27
-60
lines changed

2 files changed

+27
-60
lines changed

main.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ async function main() {
1515
message: 'What To Do?',
1616
choices: [
1717
'Encrypt A File',
18-
'Encrypt A Folder',
1918
'Decrypt A File',
20-
'Decrypt A Folder',
2119
new prompter.Separator(),
2220
'Export Current Key Pair',
2321
'Generate A New Key Pair',
@@ -28,15 +26,9 @@ async function main() {
2826
case 'Encrypt A File':
2927
modules.encryptFile()
3028
break;
31-
case 'Encrypt A Folder':
32-
console.log('Feature Coming Soon!')
33-
break;
3429
case 'Decrypt A File':
3530
modules.decryptFile()
3631
break;
37-
case 'Decrypt A Folder':
38-
console.log('Feature Coming Soon!')
39-
break;
4032
case 'Export Current Key Pair':
4133
console.log('Feature Coming Soon!')
4234
break;

modules.js

Lines changed: 27 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,11 @@
22

33
const prompter = require('inquirer')
44
const nodeRSA = require('node-rsa')
5+
const path = require('path')
56
const fs = require('fs')
67

78
const macros = require('./macros')
89

9-
function encrypt(filename, keylocation) {
10-
try {
11-
const fileData = fs.readFileSync(filename, 'utf8')
12-
const keyData = fs.readFileSync(`${keylocation}/public.txt`, 'utf8')
13-
const start = new Date()
14-
const key = new nodeRSA()
15-
key.importKey(keyData)
16-
17-
fs.writeFileSync(`${filename}`, key.encrypt(fileData, 'base64'), 'utf8')
18-
19-
return console.log(macros.infoLog(`✔\x20Success! File Has Been Encrypted. Took ${new Date() - start}ms`))
20-
} catch (err) {
21-
console.clear()
22-
console.error(macros.errorLog('[Modules:encryptFile:encrypt:Error]'), macros.resetLog('An Error Occured. Please see below.'))
23-
console.error(err)
24-
return process.exit(1)
25-
}
26-
}
27-
28-
function decrypt(filename, keylocation) {
29-
try {
30-
const fileData = fs.readFileSync(filename, 'utf8')
31-
const keyData = fs.readFileSync(`${keylocation}/private.txt`, 'utf8')
32-
const start = new Date()
33-
const key = new nodeRSA()
34-
key.importKey(keyData)
35-
36-
fs.writeFileSync(`${filename}`, key.decrypt(fileData, 'utf8'), 'utf8')
37-
38-
return console.log(macros.infoLog(`✔\x20Success! File Has Been Decrypted. Took ${new Date() - start}ms`))
39-
} catch (err) {
40-
console.clear()
41-
console.error(macros.errorLog('[Modules:decryptFile:decrypt:Error]'), macros.resetLog('An Error Occured. Please see below.'))
42-
console.error(err)
43-
return process.exit(1)
44-
}
45-
}
46-
4710
module.exports = {
4811
encryptFile: () => {
4912
prompter.prompt([
@@ -52,8 +15,9 @@ module.exports = {
5215
name: 'filename',
5316
message: 'Location Of File?',
5417
validate: value => {
55-
if (value === null || value === '') return 'Error: File Location Required!'
18+
if (value === null || value === '') return 'Error: File location required!'
5619
if (!fs.existsSync(value)) return 'Error: Unable to locate file!'
20+
if (fs.statSync(value).isDirectory()) return 'Error: Unable to encrypt folders!'
5721

5822
return true
5923
}
@@ -63,7 +27,7 @@ module.exports = {
6327
name: 'rsakeys',
6428
message: 'Where Are Your Signing Keys?',
6529
default: () => {
66-
return `${__dirname}/.rsakeys/`
30+
return path.join(__dirname, '.rsakeys')
6731
},
6832
validate: value => {
6933
if (value === null || value === '') return 'Error: Key Pair Location Required!'
@@ -75,7 +39,7 @@ module.exports = {
7539
{
7640
type: 'confirm',
7741
name: 'confirmation',
78-
message: 'Are The Above Details Correct?',
42+
message: 'Are The Details Correct?',
7943
default: false
8044
}
8145
]).then(results => {
@@ -86,26 +50,32 @@ module.exports = {
8650

8751
console.log(macros.infoLog('Encrypting File Now. It might take awhile.'))
8852

89-
return encrypt(results.filename, results.rsakeys)
53+
const fileData = fs.readFileSync(results.filename, 'utf8')
54+
const keyData = fs.readFileSync(`${results.rsakeys}/public.txt`, 'utf8')
55+
const start = new Date()
56+
const key = new nodeRSA()
57+
key.importKey(keyData)
58+
59+
fs.writeFileSync(`${results.filename}`, key.encrypt(fileData, 'base64'), 'utf8')
60+
61+
return console.log(macros.infoLog(`✔\x20Success! File Has Been Encrypted. Took ${new Date() - start}ms`))
9062
}).catch(err => {
9163
console.clear()
9264
console.error(macros.errorLog('[Modules:encryptFile:Error]'), macros.resetLog('An Error Occured. Please see below.'))
9365
console.error(err)
9466
return process.exit(1)
9567
})
9668
},
97-
encryptFolder: () => {
98-
console.log("encryptFolder!")
99-
},
10069
decryptFile: () => {
10170
prompter.prompt([
10271
{
10372
type: 'input',
10473
name: 'filename',
10574
message: 'Location Of File?',
10675
validate: value => {
107-
if (value === null || value === '') return 'Error: File Location Required!'
76+
if (value === null || value === '') return 'Error: File location required!'
10877
if (!fs.existsSync(value)) return 'Error: Unable to locate file!'
78+
if (fs.statSync(value).isDirectory()) return 'Error: Unable to decrypt folders!'
10979

11080
return true
11181
}
@@ -115,7 +85,7 @@ module.exports = {
11585
name: 'rsakeys',
11686
message: 'Where Are Your Signing Keys?',
11787
default: () => {
118-
return `${__dirname}/.rsakeys/`
88+
return path.join(__dirname, '.rsakeys')
11989
},
12090
validate: value => {
12191
if (value === null || value === '') return 'Error: Key Pair Location Required!'
@@ -127,7 +97,7 @@ module.exports = {
12797
{
12898
type: 'confirm',
12999
name: 'confirmation',
130-
message: 'Are The Above Details Correct?',
100+
message: 'Are The Details Correct?',
131101
default: false
132102
}
133103
]).then(results => {
@@ -138,17 +108,22 @@ module.exports = {
138108

139109
console.log(macros.infoLog('Decrypting File Now. It might take awhile.'))
140110

141-
return decrypt(results.filename, results.rsakeys)
111+
const fileData = fs.readFileSync(results.filename, 'utf8')
112+
const keyData = fs.readFileSync(`${results.rsakeys}/private.txt`, 'utf8')
113+
const start = new Date()
114+
const key = new nodeRSA()
115+
key.importKey(keyData)
116+
117+
fs.writeFileSync(`${results.filename}`, key.decrypt(fileData, 'utf8'), 'utf8')
118+
119+
return console.log(macros.infoLog(`✔\x20Success! File Has Been Decrypted. Took ${new Date() - start}ms`))
142120
}).catch(err => {
143121
console.clear()
144122
console.error(macros.errorLog('[Modules:decryptFile:Error]'), macros.resetLog('An Error Occured. Please see below.'))
145123
console.error(err)
146124
return process.exit(1)
147125
})
148126
},
149-
decryptFolder: () => {
150-
console.log("decryptFolder")
151-
},
152127
exportKeys: () => {
153128
console.log("exportKeys!")
154129
},

0 commit comments

Comments
 (0)