mirror of https://github.com/aptly-dev/aptly
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
// Package pgp provides interface to signature generation and validation
|
|
package pgp
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
// Key is key in PGP representation
|
|
type Key string
|
|
|
|
// Matches checks two keys for equality
|
|
func (key1 Key) Matches(key2 Key) bool {
|
|
if key1 == key2 {
|
|
return true
|
|
}
|
|
|
|
if len(key1) == 8 && len(key2) == 16 {
|
|
return key1 == key2[8:]
|
|
}
|
|
|
|
if len(key1) == 16 && len(key2) == 8 {
|
|
return key1[8:] == key2
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// KeyFromUint64 converts openpgp uint64 into hex human-readable
|
|
func KeyFromUint64(key uint64) Key {
|
|
return Key(fmt.Sprintf("%016X", key))
|
|
}
|
|
|
|
// KeyInfo is response from signature verification
|
|
type KeyInfo struct {
|
|
GoodKeys []Key
|
|
MissingKeys []Key
|
|
}
|
|
|
|
// Signer interface describes facility implementing signing of files
|
|
type Signer interface {
|
|
Init() error
|
|
SetKey(keyRef string)
|
|
SetKeyRing(keyring, secretKeyring string)
|
|
SetPassphrase(passphrase, passphraseFile string)
|
|
SetBatch(batch bool)
|
|
DetachedSign(source string, destination string) error
|
|
ClearSign(source string, destination string) error
|
|
}
|
|
|
|
// Verifier interface describes signature verification factility
|
|
type Verifier interface {
|
|
InitKeyring(verbose bool) error
|
|
AddKeyring(keyring string)
|
|
VerifyDetachedSignature(signature, cleartext io.Reader, showKeyTip bool) error
|
|
IsClearSigned(clearsigned io.Reader) (bool, error)
|
|
VerifyClearsigned(clearsigned io.Reader, showKeyTip bool) (*KeyInfo, error)
|
|
ExtractClearsigned(clearsigned io.Reader) (text *os.File, err error)
|
|
}
|