cli-controlled encryption

This commit is contained in:
ed 2019-12-18 12:09:54 +01:00
parent c21833fcf0
commit 3c6920df6b
1 changed files with 37 additions and 2 deletions

39
main.go
View File

@ -9,6 +9,8 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"os" "os"
"syscall"
"golang.org/x/crypto/ssh/terminal"
) )
func checkErr(err error) { func checkErr(err error) {
@ -63,9 +65,10 @@ func getMode() string {
var mode string var mode string
fmt.Print("mode: ") fmt.Print("mode: ")
fmt.Fscan(os.Stdin, &mode) fmt.Fscan(os.Stdin, &mode)
if mode == "q" {os.Exit(1)}
if mode != "h" && mode != "s" { if mode != "h" && mode != "s" {
fmt.Println("not a mode") fmt.Println("not a mode")
fmt.Println("type 'h' for hide or 's' for show") fmt.Println("type 'h' for hide, 's' for show or 'q' to quit")
mode = getMode() mode = getMode()
} }
return mode return mode
@ -88,11 +91,43 @@ func readFn() string {
return filename return filename
} }
func readPass() string {
pw, err := terminal.ReadPassword(int(syscall.Stdin))
checkErr(err)
return string(pw)
}
func checkPass() string {
var pw string
fmt.Print("password: ")
pw1 := readPass()
fmt.Print("\nagain: ")
pw2 := readPass()
fmt.Print("\n")
if pw1 == pw2 {
pw = pw1
} else {
fmt.Println("passwords don't match")
checkPass()
}
return pw
}
func main() { func main() {
fn := readFn() fn := readFn()
fmt.Println(fn) fmt.Println(fn)
mode := getMode() mode := getMode()
fmt.Println(mode) switch mode {
case "h":
pw := checkPass()
key := keyMkr(pw)
data := file2data(fn)
secret := encrypt(data,key)
secretfn := fn + ".hdn"
data2file(secretfn,secret)
case "s":
fmt.Println("decrypt")
}
/* /*
var passwd string = "ThisAnnPassphrase" var passwd string = "ThisAnnPassphrase"
fmt.Println(passwd) fmt.Println(passwd)