From b2742dc28d1ff9001cd784455bbdf9cf29539c30 Mon Sep 17 00:00:00 2001 From: Laria Carolin Chabowski Date: Thu, 14 Sep 2017 07:42:50 +0200 Subject: Implement remaining subcommands --- gpg/gpg.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 gpg/gpg.go (limited to 'gpg') diff --git a/gpg/gpg.go b/gpg/gpg.go new file mode 100644 index 0000000..4639ae2 --- /dev/null +++ b/gpg/gpg.go @@ -0,0 +1,35 @@ +package gpg + +// Package gpg wraps around the gpg command line tool and exposes some of its functionality + +import ( + "bytes" + "os/exec" +) + +// Signer implements objects.Signer using gpg +type Signer struct { + Key string +} + +// Sign signs a message b with the key s.Key +func (s Signer) Sign(b []byte) ([]byte, error) { + cmd := exec.Command("gpg", "--clearsign", "-u", s.Key) + + cmd.Stdin = bytes.NewReader(b) + var out bytes.Buffer + cmd.Stdout = &out + + err := cmd.Run() + return out.Bytes(), err +} + +// Verifyer implements objects.Verifyer using gpg +type Verifyer struct{} + +// Verify verifies the signed message b +func (Verifyer) Verify(b []byte) error { + cmd := exec.Command("gpg", "--verify") + cmd.Stdin = bytes.NewReader(b) + return cmd.Run() +} -- cgit v1.2.3-54-g00ecf