aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--file/names.go24
-rw-r--r--file/names_test.go24
-rw-r--r--main.go25
-rw-r--r--main_test.go24
4 files changed, 51 insertions, 46 deletions
diff --git a/file/names.go b/file/names.go
new file mode 100644
index 0000000..265117e
--- /dev/null
+++ b/file/names.go
@@ -0,0 +1,24 @@
+package file
+
+import (
+ "errors"
+ "path/filepath"
+)
+
+var ErrNames = errors.New("please use naming scheme of keyname.pub and keyname.sec")
+
+func Names(pubFile, secFile string) error {
+ pubFile = filepath.Base(pubFile)
+ secFile = filepath.Base(secFile)
+ pubExt := filepath.Ext(pubFile)
+ secExt := filepath.Ext(secFile)
+ if pubExt != ".pub" || secExt != ".sec" || pubFile[:len(pubExt)-1] != secFile[:len(secExt)-1] {
+ return ErrNames
+ }
+ return nil
+}
+
+func PubName(secFile string) string {
+ ext := filepath.Ext(secFile)
+ return filepath.Base(secFile[:len(ext)-1] + ".pub")
+}
diff --git a/file/names_test.go b/file/names_test.go
new file mode 100644
index 0000000..5c9941a
--- /dev/null
+++ b/file/names_test.go
@@ -0,0 +1,24 @@
+package file
+
+import "testing"
+
+func TestNames(t *testing.T) {
+ testCases := []struct {
+ pub, sec string
+ err error
+ }{
+ {"key.pub", "key.sec", nil},
+ {"testdata/key.pub", "key.sec", nil},
+ {"key.pub", "testdata/key.sec", nil},
+ {"foo.pub", "bar.sec", ErrNames},
+ {"key.foo", "key.bar", ErrNames},
+ }
+ for _, tc := range testCases {
+ t.Run(tc.pub+"+"+tc.sec, func(t *testing.T) {
+ err := Names(tc.pub, tc.sec)
+ if err != tc.err {
+ t.Errorf("got %v, want %v", err, tc.err)
+ }
+ })
+ }
+}
diff --git a/main.go b/main.go
index 6d57343..4471418 100644
--- a/main.go
+++ b/main.go
@@ -1,12 +1,10 @@
package main
import (
- "errors"
"flag"
"fmt"
"io/ioutil"
"log"
- "path/filepath"
"dim13.org/signify/ask"
"dim13.org/signify/file"
@@ -38,10 +36,6 @@ var (
gzip = flag.Bool("z", false, "Sign and verify gzip archives")
)
-var (
- ErrNamingScheme = errors.New("please use naming scheme of keyname.pub and keyname.sec")
-)
-
func main() {
flag.Parse()
@@ -64,8 +58,8 @@ func main() {
}
func Generate(pubFile, secFile, comment string, nopass bool) error {
- if !NamingScheme(pubFile, secFile) {
- return ErrNamingScheme
+ if err := file.Names(pubFile, secFile); err != nil {
+ return err
}
pubKey, encKey, err := signify.NewKey()
@@ -174,7 +168,7 @@ func Sign(msgFile, secFile string, embed bool) error {
return err
}
sigfile := &file.Block{
- Comment: fmt.Sprintf("verify with %s", ToPub(secFile)), // TODO replace .sec with .pub
+ Comment: fmt.Sprintf("verify with %s", file.PubName(secFile)),
Bytes: sigRaw,
}
if embed {
@@ -201,16 +195,3 @@ func Verify(msgFile, pubFile string) error {
log.Println("Signature Verfied")
return nil
}
-
-func NamingScheme(pubFile, secFile string) bool {
- pubFile = filepath.Base(pubFile)
- secFile = filepath.Base(secFile)
- pubExt := filepath.Ext(pubFile)
- secExt := filepath.Ext(secFile)
- return pubExt == ".pub" && secExt == ".sec" && pubFile[:len(pubExt)-1] == secFile[:len(secExt)-1]
-}
-
-func ToPub(secFile string) string {
- ext := filepath.Ext(secFile)
- return filepath.Base(secFile[:len(ext)-1] + ".pub")
-}
diff --git a/main_test.go b/main_test.go
deleted file mode 100644
index 1e8d0e5..0000000
--- a/main_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package main
-
-import "testing"
-
-func TestNamingScheme(t *testing.T) {
- testCases := []struct {
- pub, sec string
- ok bool
- }{
- {"key.pub", "key.sec", true},
- {"testdata/key.pub", "key.sec", true},
- {"key.pub", "testdata/key.sec", true},
- {"foo.pub", "bar.sec", false},
- {"key.foo", "key.bar", false},
- }
- for _, tc := range testCases {
- t.Run(tc.pub+"+"+tc.sec, func(t *testing.T) {
- ok := NamingScheme(tc.pub, tc.sec)
- if ok != tc.ok {
- t.Errorf("got %v, want %v", ok, tc.ok)
- }
- })
- }
-}