From 4e9762633f173b98c83fc2728bbad5951cc1dd70 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 2 May 2017 16:57:52 +0200 Subject: Split files --- ver.go | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 ver.go (limited to 'ver.go') diff --git a/ver.go b/ver.go new file mode 100644 index 0000000..3de37b2 --- /dev/null +++ b/ver.go @@ -0,0 +1,64 @@ +package main + +import ( + "fmt" + "io/ioutil" + + "dim13.org/signify/file" + "dim13.org/signify/key" +) + +func Verify(msgFile, pubFile string, quiet bool) error { + pubKey, err := OpenPub(pubFile) + if err != nil { + return err + } + sig, body, err := OpenSig(msgFile) + if err != nil { + return err + } + if err := pubKey.Verify(body, sig); err != nil { + return err + } + if !quiet { + fmt.Println("Signature Verfied") + } + return nil +} + +func OpenPub(fname string) (*key.Pub, error) { + block, err := file.DecodeFile(fname) + if err != nil { + return nil, err + } + pubKey := new(key.Pub) + if err := key.Unmarshal(block.Bytes, pubKey); err != nil { + return nil, err + } + if err := pubKey.Check(); err != nil { + return nil, err + } + return pubKey, nil +} + +func OpenSig(fname string) (*key.Sig, []byte, error) { + block, err := file.DecodeFile(fname + ".sig") + if err != nil { + return nil, nil, err + } + sig := new(key.Sig) + if err := key.Unmarshal(block.Bytes, sig); err != nil { + return nil, nil, err + } + if err := sig.Check(); err != nil { + return nil, nil, err + } + if len(block.Message) > 0 { + return sig, block.Message, nil + } + msg, err := ioutil.ReadFile(fname) + if err != nil { + return nil, nil, err + } + return sig, msg, nil +} -- cgit v1.2.3