mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-07 05:42:42 +00:00
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:
+2
-2
@@ -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
@@ -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
@@ -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.+`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user