initial commit
This commit is contained in:
commit
f6e6e78beb
398 changed files with 242114 additions and 0 deletions
84
main.go
Normal file
84
main.go
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
// Copyright (C) 2019 Marius Schellenberger
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"git.giftfish.de/ston1th/gocrypt/pkg/crypto"
|
||||
"git.giftfish.de/ston1th/godrop/v2"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
var (
|
||||
encMode bool
|
||||
decMode bool
|
||||
input string
|
||||
output string
|
||||
)
|
||||
|
||||
func fatal(err error) {
|
||||
if err != nil {
|
||||
fatals(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func fatals(s string) {
|
||||
stderr("error: " + s + "\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func stderr(s string) {
|
||||
fmt.Fprintf(os.Stderr, s)
|
||||
}
|
||||
|
||||
func init() {
|
||||
fatal(godrop.PledgePromises("stdio rpath wpath cpath tty unveil"))
|
||||
fatal(godrop.Unveil("/", ""))
|
||||
flag.BoolVar(&encMode, "enc", false, "encryption mode - password is read from stdin")
|
||||
flag.BoolVar(&decMode, "dec", false, "decryption mode - password is read from stdin")
|
||||
flag.StringVar(&input, "f", "", "input file")
|
||||
flag.StringVar(&output, "o", "-", "output file (default stdout)")
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func main() {
|
||||
var (
|
||||
in []byte
|
||||
out io.WriteCloser
|
||||
err error
|
||||
)
|
||||
if input == "" {
|
||||
fatals("input file is empty")
|
||||
} else {
|
||||
fatal(godrop.Unveil(input, "r"))
|
||||
in, err = ioutil.ReadFile(input)
|
||||
fatal(err)
|
||||
}
|
||||
if output == "" {
|
||||
fatals("output file is empty")
|
||||
} else if output == "-" {
|
||||
out = os.Stdout
|
||||
} else {
|
||||
fatal(godrop.Unveil(output, "wc"))
|
||||
out, err = os.OpenFile(output, os.O_WRONLY|os.O_CREATE, 0640)
|
||||
fatal(err)
|
||||
}
|
||||
fatal(godrop.PledgePromises("stdio tty"))
|
||||
stderr("Enter password: ")
|
||||
pass, err := crypto.Password()
|
||||
stderr("\n")
|
||||
fatal(err)
|
||||
fatal(godrop.PledgePromises("stdio"))
|
||||
switch {
|
||||
case encMode == true:
|
||||
err = crypto.Encrypt(pass, in, out)
|
||||
fatal(err)
|
||||
case decMode == true:
|
||||
err = crypto.Decrypt(pass, in, out)
|
||||
fatal(err)
|
||||
}
|
||||
fatal(out.Close())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue