aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-05-02 22:29:34 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-05-02 22:29:34 +0200
commita1152d457156263eba945e18bafad7ccdbf9efd8 (patch)
tree7c19023a78cf2f08588f9ae39f36a49befdbec94
parent391e198592a23c53f65710ba71635b6060cae009 (diff)
verify with
-rw-r--r--check.go2
-rw-r--r--file/names.go4
-rw-r--r--sign.go10
-rw-r--r--verify.go38
4 files changed, 33 insertions, 21 deletions
diff --git a/check.go b/check.go
index f3fe33d..e576dff 100644
--- a/check.go
+++ b/check.go
@@ -21,6 +21,6 @@ func check() error {
files[i] = args.Arg(i)
}
fmt.Println(files)
- _, _, _ = quiet, pubFile, sigFile
+ _, _, _ = quiet, pubFile, sigFile // TODO
return nil
}
diff --git a/file/names.go b/file/names.go
index 6846097..2ee1518 100644
--- a/file/names.go
+++ b/file/names.go
@@ -35,3 +35,7 @@ func PubFile(comment string) (string, bool) {
}
return "", false
}
+
+func VerifyWith(encFile string) string {
+ return verifyWith + PubName(encFile)
+}
diff --git a/sign.go b/sign.go
index f3d841d..692468e 100644
--- a/sign.go
+++ b/sign.go
@@ -2,7 +2,6 @@ package main
import (
"flag"
- "fmt"
"io/ioutil"
"os"
@@ -30,7 +29,10 @@ func sign() error {
args.Usage()
return nil
}
- _, _ = zip, sigFile
+ if *sigFile == "" {
+ *sigFile = *msgFile + ".sig"
+ }
+ _ = zip // TODO
encKey, err := OpenEnc(*encFile)
if err != nil {
@@ -46,13 +48,13 @@ func sign() error {
return err
}
block := &file.Block{
- Comment: fmt.Sprintf("verify with %s", file.PubName(*encFile)),
+ Comment: file.VerifyWith(*encFile),
Bytes: sigRaw,
}
if *embedded {
block.Message = body
}
- if err := file.EncodeFile(*msgFile+".sig", file.SigMode, block); err != nil {
+ if err := file.EncodeFile(*sigFile, file.SigMode, block); err != nil {
return err
}
return nil
diff --git a/verify.go b/verify.go
index 8f0e674..1627516 100644
--- a/verify.go
+++ b/verify.go
@@ -31,16 +31,28 @@ func verify() error {
args.Usage()
return nil
}
- _, _, _ = embedded, keyType, sigFile
+ if *sigFile == "" {
+ *sigFile = *msgFile + ".sig"
+ }
+ _ = keyType // TODO
- pubKey, err := OpenPub(*pubFile)
+ sig, body, verifyWith, err := OpenSig(*sigFile)
if err != nil {
return err
}
- sig, body, err := OpenSig(*msgFile)
+ if verifyWith != "" {
+ *pubFile = verifyWith
+ }
+ pubKey, err := OpenPub(*pubFile)
if err != nil {
return err
}
+ if !*embedded {
+ body, err = ioutil.ReadFile(*msgFile)
+ if err != nil {
+ return err
+ }
+ }
if err := pubKey.Verify(body, sig); err != nil {
return err
}
@@ -65,24 +77,18 @@ func OpenPub(fname string) (*key.Pub, error) {
return pubKey, nil
}
-func OpenSig(fname string) (*key.Sig, []byte, error) {
- block, err := file.DecodeFile(fname + ".sig")
+func OpenSig(fname string) (*key.Sig, []byte, string, error) {
+ block, err := file.DecodeFile(fname)
if err != nil {
- return nil, nil, err
+ return nil, nil, "", err
}
sig := new(key.Sig)
if err := key.Unmarshal(block.Bytes, sig); err != nil {
- return nil, nil, err
+ 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 nil, nil, "", err
}
- return sig, msg, nil
+ pubKey, _ := file.PubFile(block.Comment)
+ return sig, block.Message, pubKey, nil
}