Skip to content

Commit

Permalink
Refactor out IsClearSigned to separate method. #71
Browse files Browse the repository at this point in the history
  • Loading branch information
smira committed Mar 13, 2015
1 parent 9e39dbf commit 8e20daa
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
10 changes: 4 additions & 6 deletions deb/deb.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@ package deb

import (
"archive/tar"
"bufio"
"compress/gzip"
"fmt"
"github.com/mkrautz/goar"
"github.com/smira/aptly/utils"
"io"
"os"
"strings"
)

// GetControlFileFromDeb reads control file from deb package
Expand Down Expand Up @@ -69,16 +67,16 @@ func GetControlFileFromDsc(dscFile string, verifier utils.Verifier) (Stanza, err
}
defer file.Close()

line, err := bufio.NewReader(file).ReadString('\n')
isClearSigned, err := verifier.IsClearSigned(file)
file.Seek(0, 0)

if err != nil {
return nil, err
}

file.Seek(0, 0)

var text *os.File

if strings.Index(line, "BEGIN PGP SIGN") != -1 {
if isClearSigned {
text, err = verifier.ExtractClearsigned(file)
if err != nil {
return nil, err
Expand Down
4 changes: 4 additions & 0 deletions deb/remote_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ func (n *NullVerifier) ExtractClearsigned(clearsigned io.Reader) (text *os.File,
return
}

func (n *NullVerifier) IsClearSigned(clearsign io.Reader) (bool, error) {
return false, nil
}

type PackageListMixinSuite struct {
p1, p2, p3 *Package
list *PackageList
Expand Down
18 changes: 18 additions & 0 deletions utils/gpg.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package utils

import (
"bufio"
"bytes"
"fmt"
"io"
Expand Down Expand Up @@ -28,6 +29,7 @@ type Verifier interface {
InitKeyring() error
AddKeyring(keyring string)
VerifyDetachedSignature(signature, cleartext io.Reader) error
IsClearSigned(clearsigned io.Reader) (bool, error)
VerifyClearsigned(clearsigned io.Reader) error
ExtractClearsigned(clearsigned io.Reader) (text *os.File, err error)
}
Expand Down Expand Up @@ -257,6 +259,22 @@ func (g *GpgVerifier) VerifyDetachedSignature(signature, cleartext io.Reader) er
return g.runGpgv(args, "detached signature")
}

// IsClearSigned returns true if file contains signature
func (g *GpgVerifier) IsClearSigned(clearsigned io.Reader) (bool, error) {
scanner := bufio.NewScanner(clearsigned)
for scanner.Scan() {
if strings.Index(scanner.Text(), "BEGIN PGP SIGN") != -1 {
return true, nil
}
}

if err := scanner.Err(); err != nil {
return false, err
}

return false, nil
}

// VerifyClearsigned verifies clearsigned file using gpgv
func (g *GpgVerifier) VerifyClearsigned(clearsigned io.Reader) error {
args := g.argsKeyrings()
Expand Down

0 comments on commit 8e20daa

Please sign in to comment.