fix gpg setting

Init is actually never called and I have no clue why it is there if it is
not called.
Take this opportunity to introduce a New function which only does the
helper lookup and panics iff that fails. Panic may be a bit too aggressive,
but seems the most certain way to get out of not finding a suitable gpg1
binary.
This commit is contained in:
Harald Sitter
2018-04-26 09:18:06 +02:00
parent f89e322ece
commit 5a713534c6
3 changed files with 32 additions and 28 deletions
+2 -2
View File
@@ -400,7 +400,7 @@ func (context *AptlyContext) GetSigner() pgp.Signer {
defer context.Unlock()
if context.pgpProvider() == "gpg" { // nolint: goconst
return &pgp.GpgSigner{}
return pgp.NewGpgSigner()
}
return &pgp.GoSigner{}
@@ -412,7 +412,7 @@ func (context *AptlyContext) GetVerifier() pgp.Verifier {
defer context.Unlock()
if context.pgpProvider() == "gpg" { // nolint: goconst
return &pgp.GpgVerifier{}
return pgp.NewGpgVerifier()
}
return &pgp.GoVerifier{}
+24 -6
View File
@@ -114,14 +114,17 @@ func findGPGV1() (string, error) {
return "", fmt.Errorf("Couldn't find a suitable gpgv executable. Make sure gpgv1 is available as either gpgv or gpgv1 in $PATH")
}
// NewGpgSigner creates a new gpg signer
func NewGpgSigner() *GpgSigner {
gpg, err := findGPG1()
if err != nil {
panic(err)
}
return &GpgSigner{gpg: gpg}
}
// Init verifies availability of gpg & presence of keys
func (g *GpgSigner) Init() error {
cmd, err := findGPG1()
if err != nil {
return err
}
g.gpg = cmd
output, err := exec.Command(g.gpg, "--list-keys", "--dry-run", "--no-auto-check-trustdb").CombinedOutput()
if err != nil {
return fmt.Errorf("unable to execute gpg: %s (is gpg installed?): %s", err, string(output))
@@ -168,6 +171,21 @@ type GpgVerifier struct {
keyRings []string
}
// NewGpgVerifier creates a new gpg signer
func NewGpgVerifier() *GpgVerifier {
gpg, err := findGPG1()
if err != nil {
panic(err)
}
gpgv, err := findGPGV1()
if err != nil {
panic(err)
}
return &GpgVerifier{gpg: gpg, gpgv: gpgv}
}
// InitKeyring verifies that gpg is installed and some keys are trusted
func (g *GpgVerifier) InitKeyring() error {
cmd, err := findGPG1()
+6 -20
View File
@@ -26,9 +26,7 @@ func (s *GnupgSuite) TestGPG1(c *C) {
os.Setenv("PATH", filepath.Join(s.bins, "gpg1"))
defer func() { os.Setenv("PATH", origPath) }()
signer := GpgSigner{}
err := signer.Init()
c.Assert(err, IsNil)
signer := NewGpgSigner()
c.Assert(signer.gpg, Equals, "gpg")
}
@@ -38,9 +36,7 @@ func (s *GnupgSuite) TestGPG1Not2(c *C) {
os.Setenv("PATH", filepath.Join(s.bins, "gpg2-and-1"))
defer func() { os.Setenv("PATH", origPath) }()
signer := GpgSigner{}
err := signer.Init()
c.Assert(err, IsNil)
signer := NewGpgSigner()
c.Assert(signer.gpg, Equals, "gpg1")
}
@@ -50,10 +46,7 @@ func (s *GnupgSuite) TestGPGNothing(c *C) {
os.Setenv("PATH", filepath.Join(s.bins, "gpg2-only"))
defer func() { os.Setenv("PATH", origPath) }()
signer := GpgSigner{}
err := signer.Init()
c.Assert(err, NotNil)
c.Assert(signer.gpg, Equals, "")
c.Assert(func() { NewGpgSigner() }, PanicMatches, `Couldn't find a suitable gpg executable.+`)
}
// If gpgv == gpgv1 = pick gpgv
@@ -62,9 +55,7 @@ func (s *GnupgSuite) TestGPGV1(c *C) {
os.Setenv("PATH", filepath.Join(s.bins, "gpgv1")+":"+filepath.Join(s.bins, "gpg1"))
defer func() { os.Setenv("PATH", origPath) }()
verifier := GpgVerifier{}
err := verifier.InitKeyring()
c.Assert(err, IsNil)
verifier := NewGpgVerifier()
c.Assert(verifier.gpgv, Equals, "gpgv")
}
@@ -74,9 +65,7 @@ func (s *GnupgSuite) TestGPGV1Not2(c *C) {
os.Setenv("PATH", filepath.Join(s.bins, "gpgv2-and-1")+":"+filepath.Join(s.bins, "gpg1"))
defer func() { os.Setenv("PATH", origPath) }()
verifier := GpgVerifier{}
err := verifier.InitKeyring()
c.Assert(err, IsNil)
verifier := NewGpgVerifier()
c.Assert(verifier.gpgv, Equals, "gpgv1")
}
@@ -86,8 +75,5 @@ func (s *GnupgSuite) TestGPGVNothing(c *C) {
os.Setenv("PATH", filepath.Join(s.bins, "gpgv2-only")+":"+filepath.Join(s.bins, "gpg1"))
defer func() { os.Setenv("PATH", origPath) }()
verifier := GpgVerifier{}
err := verifier.InitKeyring()
c.Assert(err, NotNil)
c.Assert(verifier.gpgv, Equals, "")
c.Assert(func() { NewGpgVerifier() }, PanicMatches, `Couldn't find a suitable gpgv executable.+`)
}