Files
attest/pkg/policy/evaluator.go

31 lines
863 B
Go
Raw Normal View History

2024-04-22 12:22:15 -05:00
package policy
import (
"context"
"fmt"
2024-04-22 12:51:10 -05:00
"github.com/docker/attest/pkg/oci"
2024-04-22 12:22:15 -05:00
)
type policyEvaluatorCtxKeyType struct{}
var PolicyEvaluatorCtxKey policyEvaluatorCtxKeyType
// sets PolicyEvaluator in context
func WithPolicyEvaluator(ctx context.Context, pe PolicyEvaluator) context.Context {
return context.WithValue(ctx, PolicyEvaluatorCtxKey, pe)
}
// gets PolicyEvaluator from context, defaults to Rego PolicyEvaluator if not set
func GetPolicyEvaluator(ctx context.Context) (PolicyEvaluator, error) {
t, ok := ctx.Value(PolicyEvaluatorCtxKey).(PolicyEvaluator)
if !ok {
return nil, fmt.Errorf("no policy evaluator client set on context (set one with policy.WithPolicyEvaluator)")
}
return t, nil
}
type PolicyEvaluator interface {
2024-04-30 13:13:30 -05:00
Evaluate(ctx context.Context, resolver oci.AttestationResolver, policy []*PolicyFile, input *PolicyInput) error
2024-04-22 12:22:15 -05:00
}