Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 648 Bytes

policy_go.md

File metadata and controls

27 lines (21 loc) · 648 Bytes

policy.go

实现上,一条 policy 结构实现一个 evalutor 方法。

type policy struct {
	evaluator func([]*cb.SignedData, []bool) bool
}

对外提供的方法是 Evaluate() 方法,调用了 evaluator() 私有方法。

func (p *policy) Evaluate(signatureSet []*cb.SignedData) error {
	if p == nil {
		return fmt.Errorf("No such policy")
	}

	ok := p.evaluator(signatureSet, make([]bool, len(signatureSet)))
	if !ok {
		return errors.New("Failed to authenticate policy")
	}
	return nil
}

同时,提供了 NewPolicyProvider(deserializer msp.IdentityDeserializer) policies.Provider 方法,作为工厂方法。