initial commit

This commit is contained in:
ston1th 2019-06-25 20:57:03 +02:00
commit f6e6e78beb
398 changed files with 242114 additions and 0 deletions

84
main.go Normal file
View 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())
}