@@ -41,13 +41,8 @@ type ExternalWalletSigner interface {
4141type verifierGetterFunc func (ctx context.Context , identity view.Identity ) (token.Verifier , error )
4242
4343type SignatureRequest struct {
44- TX []byte
45- Request []byte
46- Signer view.Identity
47- }
48-
49- func (sr * SignatureRequest ) MessageToSign () []byte {
50- return sr .Request
44+ TX []byte
45+ Signer view.Identity
5146}
5247
5348// Bytes returns the serialization of this struct
@@ -179,7 +174,7 @@ func (c *CollectEndorsementsView) requestSignaturesOnTransfers(context view.Cont
179174
180175func (c * CollectEndorsementsView ) requestSignatures (signers []view.Identity , verifierGetter verifierGetterFunc , context view.Context , externalWallets map [string ]ExternalWalletSigner ) (map [string ][]byte , error ) {
181176 logger .DebugfContext (context .Context (), "Request %d signatures" , len (signers ))
182- requestRaw , err := c .requestBytes ()
177+ requestRaw , err := c .tx . TokenRequest . MarshalToSign ()
183178 if err != nil {
184179 return nil , err
185180 }
@@ -197,9 +192,8 @@ func (c *CollectEndorsementsView) requestSignatures(signers []view.Identity, ver
197192 // - the signature must be generated by a remote party
198193
199194 signatureRequest := & SignatureRequest {
200- TX : txRaw ,
201- Request : requestRaw ,
202- Signer : signerIdentity ,
195+ TX : txRaw ,
196+ Signer : signerIdentity ,
203197 }
204198 logger .DebugfContext (context .Context (), "collecting signature [%d] on request from [%s]" , i , signerIdentity )
205199
@@ -227,7 +221,7 @@ func (c *CollectEndorsementsView) requestSignatures(signers []view.Identity, ver
227221 // Case: there is a signer locally bound to the party, use it to generate the signature
228222 if signer , err := c .tx .TokenService ().SigService ().GetSigner (context .Context (), signerIdentity ); err == nil {
229223 logger .DebugfContext (context .Context (), "found signer for party [%s], request local signature" , signerIdentity )
230- sigma , err := c .signLocal (context .Context (), signerIdentity , signer , signatureRequest )
224+ sigma , err := c .signLocal (context .Context (), signerIdentity , signer , requestRaw )
231225 if err != nil {
232226 return nil , errors .WithMessagef (err , "failed signing local for party [%s]" , signerIdentity )
233227 }
@@ -245,7 +239,7 @@ func (c *CollectEndorsementsView) requestSignatures(signers []view.Identity, ver
245239 return nil , errors .Errorf ("no external wallet signer found for [%s][%s]" , w .ID (), signerIdentity )
246240 }
247241 externalWallets [w .ID ()] = ews
248- sigma , err := c .signExternal (context .Context (), signerIdentity , ews , signatureRequest )
242+ sigma , err := c .signExternal (context .Context (), signerIdentity , ews , requestRaw )
249243 if err != nil {
250244 return nil , errors .WithMessagef (err , "failed signing external for party [%s]" , signerIdentity )
251245 }
@@ -255,7 +249,7 @@ func (c *CollectEndorsementsView) requestSignatures(signers []view.Identity, ver
255249
256250 // Case: the signature must be generated by a remote party
257251 logger .DebugfContext (context .Context (), "no signer or wallet found for party [%s], request remote signature" , signerIdentity )
258- sigma , err := c .signRemote (context , signerIdentity , signatureRequest , verifierGetter )
252+ sigma , err := c .signRemote (context , signerIdentity , signatureRequest , requestRaw , verifierGetter )
259253 if err != nil {
260254 return nil , errors .WithMessagef (err , "failed signing remote for party [%s]" , signerIdentity )
261255 }
@@ -266,28 +260,34 @@ func (c *CollectEndorsementsView) requestSignatures(signers []view.Identity, ver
266260 return sigmas , nil
267261}
268262
269- func (c * CollectEndorsementsView ) signLocal (ctx context.Context , party view.Identity , signer token.Signer , signatureRequest * SignatureRequest ) ([]byte , error ) {
270- logger .DebugfContext (ctx , "signing [request_hash=%s][tx_id=%s][nonce=%s]" , utils .Hashable (signatureRequest . Request ), c .tx .ID (), logging .Base64 (c .tx .TxID .Nonce ))
263+ func (c * CollectEndorsementsView ) signLocal (ctx context.Context , party view.Identity , signer token.Signer , requestRaw [] byte ) ([]byte , error ) {
264+ logger .DebugfContext (ctx , "signing [request_hash=%s][tx_id=%s][nonce=%s]" , utils .Hashable (requestRaw ), c .tx .ID (), logging .Base64 (c .tx .TxID .Nonce ))
271265
272- sigma , err := signer .Sign (signatureRequest . MessageToSign () )
266+ sigma , err := signer .Sign (requestRaw )
273267 if err != nil {
274268 return nil , err
275269 }
276- logger .DebugfContext (ctx , "signature generated (local, me) [%s,%s,%s,%v]" , utils .Hashable (signatureRequest . MessageToSign () ), utils .Hashable (sigma ), party , logging .Identifier (signer ))
270+ logger .DebugfContext (ctx , "signature generated (local, me) [%s,%s,%s,%v]" , utils .Hashable (requestRaw ), utils .Hashable (sigma ), party , logging .Identifier (signer ))
277271 return sigma , nil
278272}
279273
280- func (c * CollectEndorsementsView ) signExternal (ctx context.Context , party view.Identity , signer ExternalWalletSigner , signatureRequest * SignatureRequest ) ([]byte , error ) {
281- logger .DebugfContext (ctx , "signing [request=%s][tx_id=%s][nonce=%s]" , utils .Hashable (signatureRequest . Request ), c .tx .ID (), logging .Base64 (c .tx .TxID .Nonce ))
282- sigma , err := signer .Sign (party , signatureRequest . MessageToSign () )
274+ func (c * CollectEndorsementsView ) signExternal (ctx context.Context , party view.Identity , signer ExternalWalletSigner , requestRaw [] byte ) ([]byte , error ) {
275+ logger .DebugfContext (ctx , "signing [request=%s][tx_id=%s][nonce=%s]" , utils .Hashable (requestRaw ), c .tx .ID (), logging .Base64 (c .tx .TxID .Nonce ))
276+ sigma , err := signer .Sign (party , requestRaw )
283277 if err != nil {
284278 return nil , err
285279 }
286- logger .DebugfContext (ctx , "signature generated (external, me) [%s,%s,%s]" , utils .Hashable (signatureRequest . MessageToSign () ), utils .Hashable (sigma ), party )
280+ logger .DebugfContext (ctx , "signature generated (external, me) [%s,%s,%s]" , utils .Hashable (requestRaw ), utils .Hashable (sigma ), party )
287281 return sigma , nil
288282}
289283
290- func (c * CollectEndorsementsView ) signRemote (context view.Context , party view.Identity , signatureRequest * SignatureRequest , verifierGetter verifierGetterFunc ) ([]byte , error ) {
284+ func (c * CollectEndorsementsView ) signRemote (
285+ context view.Context ,
286+ party view.Identity ,
287+ signatureRequest * SignatureRequest ,
288+ requestRaw []byte ,
289+ verifierGetter verifierGetterFunc ,
290+ ) ([]byte , error ) {
291291 session , err := context .GetSession (context .Initiator (), party )
292292 if err != nil {
293293 return nil , errors .Wrap (err , "failed getting session" )
@@ -310,14 +310,14 @@ func (c *CollectEndorsementsView) signRemote(context view.Context, party view.Id
310310 if err != nil {
311311 return nil , errors .Wrapf (err , "failed getting verifier for [%s]" , party )
312312 }
313- logger .DebugfContext (context .Context (), "verify signature [%s][%s][%s] for txid [%s]" , utils .Hashable (signatureRequest . MessageToSign () ), utils .Hashable (sigma ), party , c .tx .ID ())
313+ logger .DebugfContext (context .Context (), "verify signature [%s][%s][%s] for txid [%s]" , utils .Hashable (requestRaw ), utils .Hashable (sigma ), party , c .tx .ID ())
314314
315- err = verifier .Verify (signatureRequest . MessageToSign () , sigma )
315+ err = verifier .Verify (requestRaw , sigma )
316316 if err != nil {
317317 return nil , errors .Wrapf (err , "failed verifying signature [%s] from [%s]" , sigma , party )
318318 }
319319
320- logger .DebugfContext (context .Context (), "signature verified [%s,%s,%s]" , utils .Hashable (signatureRequest . MessageToSign () ), utils .Hashable (sigma ), party )
320+ logger .DebugfContext (context .Context (), "signature verified [%s,%s,%s]" , utils .Hashable (requestRaw ), utils .Hashable (sigma ), party )
321321
322322 return sigma , nil
323323}
@@ -451,7 +451,12 @@ func (c *CollectEndorsementsView) distributeTxToParties(context view.Context, di
451451 return nil
452452}
453453
454- func (c * CollectEndorsementsView ) distributeTxToParty (context view.Context , entry * distributionListEntry , txRaw []byte , owner * TxOwner ) error {
454+ func (c * CollectEndorsementsView ) distributeTxToParty (
455+ context view.Context ,
456+ entry * distributionListEntry ,
457+ txRaw []byte ,
458+ owner * TxOwner ,
459+ ) error {
455460 // Open a session to the party. and send the transaction.
456461 session , err := c .getSession (context , entry .ID )
457462 if err != nil {
@@ -624,10 +629,6 @@ func (c *CollectEndorsementsView) prepareDistributionList(context view.Context,
624629 return distributionListCompressed , nil
625630}
626631
627- func (c * CollectEndorsementsView ) requestBytes () ([]byte , error ) {
628- return c .tx .TokenRequest .MarshalToSign ()
629- }
630-
631632func (c * CollectEndorsementsView ) getSession (context view.Context , p view.Identity ) (view.Session , error ) {
632633 s , ok := c .sessions [p .UniqueID ()]
633634 if ok {
0 commit comments