Fix up other code to support new GPG provider structure

This commit is contained in:
Andrey Smirnov
2017-06-03 01:26:37 +03:00
parent 07fde3177b
commit 0e9f966dd1
12 changed files with 53 additions and 14 deletions

View File

@@ -26,7 +26,7 @@ func getSigner(options *SigningOptions) (pgp.Signer, error) {
return nil, nil
}
signer := &pgp.GpgSigner{}
signer := context.GetSigner()
signer.SetKey(options.GpgKey)
signer.SetKeyRing(options.Keyring, options.SecretKeyring)
signer.SetPassphrase(options.Passphrase, options.PassphraseFile)

View File

@@ -9,7 +9,6 @@ import (
"github.com/smira/aptly/aptly"
"github.com/smira/aptly/database"
"github.com/smira/aptly/deb"
"github.com/smira/aptly/pgp"
"github.com/smira/aptly/utils"
)
@@ -297,7 +296,7 @@ func apiReposPackageFromDir(c *gin.Context) {
return
}
verifier := &pgp.GpgVerifier{}
verifier := context.GetVerifier()
var (
sources []string

View File

@@ -15,7 +15,7 @@ func getVerifier(flags *flag.FlagSet) (pgp.Verifier, error) {
keyRings := flags.Lookup("keyring").Value.Get().([]string)
verifier := &pgp.GpgVerifier{}
verifier := context.GetVerifier()
for _, keyRing := range keyRings {
verifier.AddKeyring(keyRing)
}

View File

@@ -11,7 +11,7 @@ func getSigner(flags *flag.FlagSet) (pgp.Signer, error) {
return nil, nil
}
signer := &pgp.GpgSigner{}
signer := context.GetSigner()
signer.SetKey(flags.Lookup("gpg-key").Value.String())
signer.SetKeyRing(flags.Lookup("keyring").Value.String(), flags.Lookup("secret-keyring").Value.String())
signer.SetPassphrase(flags.Lookup("passphrase").Value.String(), flags.Lookup("passphrase-file").Value.String())

View File

@@ -6,7 +6,6 @@ import (
"github.com/smira/aptly/aptly"
"github.com/smira/aptly/deb"
"github.com/smira/aptly/pgp"
"github.com/smira/aptly/utils"
"github.com/smira/commander"
"github.com/smira/flag"
@@ -21,7 +20,7 @@ func aptlyRepoAdd(cmd *commander.Command, args []string) error {
name := args[0]
verifier := &pgp.GpgVerifier{}
verifier := context.GetVerifier()
repo, err := context.CollectionFactory().LocalRepoCollection().ByName(name)
if err != nil {

View File

@@ -9,7 +9,6 @@ import (
"github.com/smira/aptly/aptly"
"github.com/smira/aptly/deb"
"github.com/smira/aptly/pgp"
"github.com/smira/aptly/query"
"github.com/smira/aptly/utils"
"github.com/smira/commander"
@@ -29,7 +28,7 @@ func aptlyRepoInclude(cmd *commander.Command, args []string) error {
}
if verifier == nil {
verifier = &pgp.GpgVerifier{}
verifier = context.GetVerifier()
}
forceReplace := context.Flags().Lookup("force-replace").Value.Get().(bool)

View File

@@ -18,6 +18,7 @@ import (
"github.com/smira/aptly/deb"
"github.com/smira/aptly/files"
"github.com/smira/aptly/http"
"github.com/smira/aptly/pgp"
"github.com/smira/aptly/s3"
"github.com/smira/aptly/swift"
"github.com/smira/aptly/utils"
@@ -373,6 +374,46 @@ func (context *AptlyContext) UploadPath() string {
return filepath.Join(context.Config().RootDir, "upload")
}
func (context *AptlyContext) pgpProvider() string {
var provider string
if context.globalFlags.IsSet("gpg-provider") {
provider = context.globalFlags.Lookup("gpg-provider").Value.String()
} else {
provider = context.config().GpgProvider
}
if !(provider == "gpg" || provider == "internal") {
Fatal(fmt.Errorf("unknown gpg provider: %v", provider))
}
return provider
}
// GetSigner returns Signer with respect to provider
func (context *AptlyContext) GetSigner() pgp.Signer {
context.Lock()
defer context.Unlock()
if context.pgpProvider() == "gpg" {
return &pgp.GpgSigner{}
}
return &pgp.GoSigner{}
}
// GetVerifier returns Verifier with respect to provider
func (context *AptlyContext) GetVerifier() pgp.Verifier {
context.Lock()
defer context.Unlock()
if context.pgpProvider() == "gpg" {
return &pgp.GpgVerifier{}
}
return &pgp.GoVerifier{}
}
// UpdateFlags sets internal copy of flags in the context
func (context *AptlyContext) UpdateFlags(flags *flag.FlagSet) {
context.Lock()

View File

@@ -2,6 +2,7 @@ package deb
import (
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
@@ -80,7 +81,7 @@ func (c *Changes) VerifyAndParse(acceptUnsigned, ignoreSignature bool, verifier
c.SignatureKeys = keyInfo.GoodKeys
}
var text *os.File
var text io.ReadCloser
if isClearSigned {
text, err = verifier.ExtractClearsigned(input)

View File

@@ -90,7 +90,7 @@ func GetControlFileFromDsc(dscFile string, verifier pgp.Verifier) (Stanza, error
return nil, err
}
var text *os.File
var text io.ReadCloser
if isClearSigned {
text, err = verifier.ExtractClearsigned(file)

View File

@@ -39,7 +39,7 @@ func (s *DebSuite) TestGetControlFileFromDeb(c *C) {
}
func (s *DebSuite) TestGetControlFileFromDsc(c *C) {
verifier := &pgp.GpgVerifier{}
verifier := &pgp.GoVerifier{}
_, err := GetControlFileFromDsc("/no/such/file", verifier)
c.Check(err, ErrorMatches, ".*no such file or directory")

View File

@@ -290,7 +290,7 @@ func (repo *RemoteRepo) Fetch(d aptly.Downloader, verifier pgp.Verifier) error {
return err
}
err = verifier.VerifyDetachedSignature(releasesig, release)
err = verifier.VerifyDetachedSignature(releasesig, release, true)
if err != nil {
return err
}

View File

@@ -28,7 +28,7 @@ func (n *NullVerifier) InitKeyring() error {
func (n *NullVerifier) AddKeyring(keyring string) {
}
func (n *NullVerifier) VerifyDetachedSignature(signature, cleartext io.Reader) error {
func (n *NullVerifier) VerifyDetachedSignature(signature, cleartext io.Reader, hint bool) error {
return nil
}