From 4e9762633f173b98c83fc2728bbad5951cc1dd70 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 2 May 2017 16:57:52 +0200 Subject: Split files --- sig.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 sig.go (limited to 'sig.go') diff --git a/sig.go b/sig.go new file mode 100644 index 0000000..ac7bc73 --- /dev/null +++ b/sig.go @@ -0,0 +1,55 @@ +package main + +import ( + "fmt" + "io/ioutil" + + "dim13.org/signify/ask" + "dim13.org/signify/file" + "dim13.org/signify/key" +) + +func Sign(msgFile, encFile string, embed bool) error { + encKey, err := OpenEnc(encFile) + if err != nil { + return err + } + body, err := ioutil.ReadFile(msgFile) + if err != nil { + return err + } + sig := encKey.Sign(body) + sigRaw, err := key.Marshal(sig) + if err != nil { + return err + } + block := &file.Block{ + Comment: fmt.Sprintf("verify with %s", file.PubName(encFile)), + Bytes: sigRaw, + } + if embed { + block.Message = body + } + if err := file.EncodeFile(msgFile+".sig", file.SigMode, block); err != nil { + return err + } + return nil +} + +func OpenEnc(fname string) (*key.Enc, error) { + block, err := file.DecodeFile(fname) + if err != nil { + return nil, err + } + encKey := new(key.Enc) + if err := key.Unmarshal(block.Bytes, encKey); err != nil { + return nil, err + } + if err := Kdf(encKey, ask.Password); err != nil { + return nil, err + } + if err := encKey.Check(); err != nil { + return nil, err + } + return encKey, nil +} -- cgit v1.2.3