quorum/plugin/verifier.go

43 lines
1.0 KiB
Go

package plugin
import (
"fmt"
"path"
)
// 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) {
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
}
}