22
33const prompter = require ( 'inquirer' )
44const nodeRSA = require ( 'node-rsa' )
5+ const path = require ( 'path' )
56const fs = require ( 'fs' )
67
78const 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-
4710module . 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