quorum/plugin/verifier.go

46 lines
1.1 KiB
Go

package plugin
import (
"fmt"
"path"
"github.com/ethereum/go-ethereum/log"
)
// Plugin Integrity Verifier.
// Verifier works on the assumption an attacker can not compromise the integrity of geth running process.
type Verifier interface {
// verify plugin signature using checksum & pgp public key
VerifySignature(definition *PluginDefinition, checksum string) error
}
type NonVerifier struct {
}
func (*NonVerifier) VerifySignature(definition *PluginDefinition, checksum string) error {
return nil
}
func NewNonVerifier() *NonVerifier {
return &NonVerifier{}
}
func NewVerifier(pm *PluginManager, localVerify bool, publicKey string) (Verifier, error) {
log.Debug("using verifier", "local", localVerify)
pluginBaseDir := pm.pluginBaseDir
centralClient := pm.centralClient
// resolve public key
if publicKey == "" {
publicKey = fmt.Sprintf("file://%s", path.Join(pluginBaseDir, DefaultPublicKeyFile))
}
publicKeyPath, err := resolveFilePath(publicKey)
if err != nil {
return nil, err
}
if localVerify {
return NewLocalVerifier(publicKeyPath, pluginBaseDir)
} else {
return NewOnlineVerifier(centralClient), nil
}
}