Skip to content

Commit fdf177f

Browse files
committed
Refactor verifier to align with the endorser implementation
Signed-off-by: Liran Funaro <[email protected]>
1 parent ed89ed4 commit fdf177f

File tree

12 files changed

+162
-180
lines changed

12 files changed

+162
-180
lines changed

loadgen/workload/sign.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func NewPolicyEndorserVerifier(profile *Policy) *NsPolicyEndorserVerifier {
116116
logger.Debugf("Generating new keys")
117117
signingKey, verificationKey = sigtest.NewKeyPairWithSeed(profile.Scheme, profile.Seed)
118118
}
119-
v, err := sigtest.NewNsVerifierFromKey(profile.Scheme, verificationKey)
119+
v, err := signature.NewNsVerifierFromKey(profile.Scheme, verificationKey)
120120
utils.Must(err)
121121
endorser, err := sigtest.NewNsEndorserFromKey(profile.Scheme, signingKey)
122122
utils.Must(err)

service/query/query_service_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,12 @@ func TestQueryPolicies(t *testing.T) {
280280
delete(expectedNamespaces, p.Namespace)
281281
item, parseErr := policy.CreateNamespaceVerifier(p, nil)
282282
require.NoError(t, parseErr)
283-
p := item.NamespacePolicy.GetThresholdRule()
284-
require.NotNil(t, p)
285-
require.Equal(t, signature.Ecdsa, p.Scheme)
283+
require.NotNil(t, item)
284+
pol, parseErr := policy.UnmarshalNamespacePolicy(p.Policy)
285+
require.NoError(t, parseErr)
286+
rule := pol.GetThresholdRule()
287+
require.NotNil(t, rule)
288+
require.Equal(t, signature.Ecdsa, rule.Scheme)
286289
}
287290

288291
configTX, err := env.clientConn.GetConfigTransaction(t.Context(), nil)

service/verifier/policy/policy.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,23 @@ func CreateNamespaceVerifier(
8484
return nil, err
8585
}
8686

87-
pol := &applicationpb.NamespacePolicy{}
88-
if err := proto.Unmarshal(pd.Policy, pol); err != nil {
89-
return nil, errors.Wrap(err, "failed to unmarshal namepsace policy bytes")
87+
pol, err := UnmarshalNamespacePolicy(pd.Policy)
88+
if err != nil {
89+
return nil, err
9090
}
91-
9291
return signature.NewNsVerifier(pol, idDeserializer)
9392
}
9493

94+
// UnmarshalNamespacePolicy unmarshals namespace policy bytes to a [applicationpb.NamespacePolicy] proto.
95+
func UnmarshalNamespacePolicy(policyBytes []byte) (*applicationpb.NamespacePolicy, error) {
96+
pol := &applicationpb.NamespacePolicy{}
97+
err := proto.Unmarshal(policyBytes, pol)
98+
if err != nil {
99+
return nil, errors.Wrap(err, "failed to unmarshal namespace policy bytes")
100+
}
101+
return pol, nil
102+
}
103+
95104
// validateNamespaceIDInPolicy checks that a given namespace fulfills namespace naming conventions.
96105
func validateNamespaceIDInPolicy(nsID string) error {
97106
// If it matches one of the system's namespaces it is invalid.

service/verifier/policy/policy_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ func TestParsePolicyItem(t *testing.T) {
7171
pd := MakePolicy(t, ns, p)
7272
retP, err := CreateNamespaceVerifier(pd, nil)
7373
require.NoError(t, err)
74-
test.RequireProtoEqual(t, p, retP.NamespacePolicy)
74+
require.NotNil(t, retP)
75+
pol, err := UnmarshalNamespacePolicy(pd.Policy)
76+
require.NoError(t, err)
77+
test.RequireProtoEqual(t, p, pol)
7578
})
7679
}
7780

service/verifier/verify.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ func (v *verifier) updatePolicies(
5555
// While it is unlikely that policy parsing would fail at this stage, it could happen
5656
// if the stored policy in the database is corrupted or maliciously altered, or if there is a
5757
// bug in the committer that modifies the policy bytes.
58-
newVerifiers, err := createVerifiers(update, v.bundle.MSPManager())
58+
idDeserializer := v.bundle.MSPManager()
59+
newVerifiers, err := createVerifiers(update, idDeserializer)
5960
if err != nil {
6061
return errors.Join(ErrUpdatePolicies, err)
6162
}
@@ -69,9 +70,9 @@ func (v *verifier) updatePolicies(
6970
}
7071

7172
// If there is a config update, the verifier for signature policies must be
72-
// recreated to use the latest MSP Manager from the new configuration.
73-
if update.Config != nil && nsVerifier.NamespacePolicy.GetMspRule() != nil {
74-
nsVerifier, err = signature.NewNsVerifier(nsVerifier.NamespacePolicy, v.bundle.MSPManager())
73+
// updated to use the latest MSP Manager from the new configuration.
74+
if update.Config != nil {
75+
err = nsVerifier.UpdateIdentities(idDeserializer)
7576
if err != nil {
7677
return err
7778
}

utils/signature/sigtest/bench_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func BenchmarkVerify(b *testing.B) {
6868
sk, pk := sigtest.NewKeyPair(scheme)
6969
endorser, err := sigtest.NewNsEndorserFromKey(scheme, sk)
7070
require.NoError(b, err)
71-
v, err := sigtest.NewNsVerifierFromKey(scheme, pk)
71+
v, err := signature.NewNsVerifierFromKey(scheme, pk)
7272
require.NoError(b, err)
7373

7474
b.Run(scheme, func(b *testing.B) {

utils/signature/sigtest/factory_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestEndToEnd(t *testing.T) {
2626
t.Run(scheme, func(t *testing.T) {
2727
t.Parallel()
2828
priv, pub := NewKeyPair(scheme)
29-
v, err := NewNsVerifierFromKey(scheme, pub)
29+
v, err := signature.NewNsVerifierFromKey(scheme, pub)
3030
require.NoError(t, err)
3131
e, err := NewNsEndorserFromKey(scheme, priv)
3232
require.NoError(t, err)
@@ -55,7 +55,7 @@ func TestEcdsaPem(t *testing.T) {
5555
priv, pub := NewKeyPair(scheme)
5656
require.NoError(t, os.WriteFile(pemPath, append(priv, pub...), 0o600))
5757

58-
v, err := NewNsVerifierFromKey(scheme, pub)
58+
v, err := signature.NewNsVerifierFromKey(scheme, pub)
5959
require.NoError(t, err)
6060
e, err := NewNsEndorserFromKey(scheme, priv)
6161
require.NoError(t, err)
@@ -69,7 +69,7 @@ func TestEcdsaPem(t *testing.T) {
6969
for key, value := range m {
7070
t.Log(key)
7171
if strings.Contains(strings.ToLower(key), "public") {
72-
pemV, err = NewNsVerifierFromKey(scheme, value)
72+
pemV, err = signature.NewNsVerifierFromKey(scheme, value)
7373
require.NoError(t, err)
7474
}
7575
if strings.Contains(strings.ToLower(key), "private") {

utils/signature/sigtest/verify_export.go

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)