@@ -18,11 +18,14 @@ package cauthdsl
18
18
19
19
import (
20
20
"fmt"
21
+ "time"
21
22
22
23
"github.com/hyperledger/fabric/common/flogging"
23
24
"github.com/hyperledger/fabric/msp"
24
25
cb "github.com/hyperledger/fabric/protos/common"
25
26
mb "github.com/hyperledger/fabric/protos/msp"
27
+
28
+ "github.com/op/go-logging"
26
29
)
27
30
28
31
var cauthdslLogger = flogging .MustGetLogger ("cauthdsl" )
@@ -45,7 +48,8 @@ func compile(policy *cb.SignaturePolicy, identities []*mb.MSPPrincipal, deserial
45
48
46
49
}
47
50
return func (signedData []* cb.SignedData , used []bool ) bool {
48
- cauthdslLogger .Debugf ("Gate evaluation starts: (%v)" , t )
51
+ grepKey := time .Now ().UnixNano ()
52
+ cauthdslLogger .Debugf ("%p gate %d evaluation starts" , signedData , grepKey )
49
53
verified := int32 (0 )
50
54
_used := make ([]bool , len (used ))
51
55
for _ , policy := range policies {
@@ -57,44 +61,50 @@ func compile(policy *cb.SignaturePolicy, identities []*mb.MSPPrincipal, deserial
57
61
}
58
62
59
63
if verified >= t .NOutOf .N {
60
- cauthdslLogger .Debugf ("Gate evaluation succeeds: (%v) " , t )
64
+ cauthdslLogger .Debugf ("%p gate %d evaluation succeeds" , signedData , grepKey )
61
65
} else {
62
- cauthdslLogger .Debugf ("Gate evaluation fails: (%v) " , t )
66
+ cauthdslLogger .Debugf ("%p gate %d evaluation fails" , signedData , grepKey )
63
67
}
64
68
65
69
return verified >= t .NOutOf .N
66
70
}, nil
67
71
case * cb.SignaturePolicy_SignedBy :
68
72
if t .SignedBy < 0 || t .SignedBy >= int32 (len (identities )) {
69
- return nil , fmt .Errorf ("Identity index out of range, requested %v, but identies length is %d" , t .SignedBy , len (identities ))
73
+ return nil , fmt .Errorf ("identity index out of range, requested %v, but identies length is %d" , t .SignedBy , len (identities ))
70
74
}
71
75
signedByID := identities [t .SignedBy ]
72
76
return func (signedData []* cb.SignedData , used []bool ) bool {
73
- cauthdslLogger .Debugf ("Principal evaluation starts: (%v) ( used %v)" , t , used )
77
+ cauthdslLogger .Debugf ("%p signed by %d principal evaluation starts ( used %v)" , signedData , t . SignedBy , used )
74
78
for i , sd := range signedData {
75
79
if used [i ] {
80
+ cauthdslLogger .Debugf ("%p skipping identity %d because it has already been used" , signedData , i )
76
81
continue
77
82
}
83
+ if cauthdslLogger .IsEnabledFor (logging .DEBUG ) {
84
+ // Unlike most places, this is a huge print statement, and worth checking log level before create garbage
85
+ cauthdslLogger .Debugf ("%p processing identity %d with bytes of %x" , signedData , i , sd .Identity )
86
+ }
78
87
identity , err := deserializer .DeserializeIdentity (sd .Identity )
79
88
if err != nil {
80
- cauthdslLogger .Errorf ("Principal deserialization failed: (%s) for identity %v " , err , sd .Identity )
89
+ cauthdslLogger .Errorf ("Principal deserialization failure (%s) for identity %x " , err , sd .Identity )
81
90
continue
82
91
}
83
92
err = identity .SatisfiesPrincipal (signedByID )
84
- if err == nil {
85
- cauthdslLogger .Debugf ("Principal matched by identity: (%v) for %v" , t , sd .Identity )
86
- err = identity .Verify (sd .Data , sd .Signature )
87
- if err == nil {
88
- used [i ] = true
89
- cauthdslLogger .Debugf ("Principal evaluation succeeds: (%v) (used %v)" , t , used )
90
- return true
91
- }
92
- cauthdslLogger .Debugf ("Invalid signature for identity: (%v)" , t )
93
- } else {
94
- cauthdslLogger .Debugf ("Identity (%v) does not satisfy principal: %s" , sd .Identity , err )
93
+ if err != nil {
94
+ cauthdslLogger .Debugf ("%p identity %d does not satisfy principal: %s" , signedData , i , err )
95
+ continue
96
+ }
97
+ cauthdslLogger .Debugf ("%p principal matched by identity %d" , signedData , i )
98
+ err = identity .Verify (sd .Data , sd .Signature )
99
+ if err != nil {
100
+ cauthdslLogger .Debugf ("%p signature for identity %d is invalid: %s" , signedData , i , err )
101
+ continue
95
102
}
103
+ cauthdslLogger .Debugf ("%p principal evaluation succeeds for identity %d" , signedData , i )
104
+ used [i ] = true
105
+ return true
96
106
}
97
- cauthdslLogger .Debugf ("Principal evaluation fails: (%v) %v " , t , used )
107
+ cauthdslLogger .Debugf ("%p principal evaluation fails" , signedData )
98
108
return false
99
109
}, nil
100
110
default :
0 commit comments