@@ -106,7 +106,7 @@ func (o *OnionAttributableErrorDecrypter) DecryptError(encryptedData []byte) (
106106 }
107107
108108 // Extract the payload and exit with a nil message if it is invalid.
109- payloadType , payload , err := o .extractPayload (payloads )
109+ source , payload , err := o .extractPayload (payloads )
110110 if sender == 0 {
111111 if err != nil {
112112 sender = i + 1
@@ -118,7 +118,7 @@ func (o *OnionAttributableErrorDecrypter) DecryptError(encryptedData []byte) (
118118
119119 // If we are at the node that is the source of the error, we can now
120120 // save the message in our return variable.
121- if payloadType == payloadFinal {
121+ if source == payloadErrorNode {
122122 sender = i + 1
123123 msg = message
124124 }
@@ -149,11 +149,6 @@ func (o *OnionAttributableErrorDecrypter) DecryptError(encryptedData []byte) (
149149 }, nil
150150}
151151
152- const (
153- payloadFinal = 1
154- payloadIntermediate = 0
155- )
156-
157152func (o * OnionAttributableErrorDecrypter ) shiftHmacsLeft (hmacs []byte ) {
158153 srcIdx := o .maxHops
159154 destIdx := 1
@@ -174,21 +169,21 @@ func (o *OnionAttributableErrorDecrypter) shiftPayloadsLeft(payloads []byte) {
174169 copy (payloads , payloads [o .payloadLen :o .maxHops * o .payloadLen ])
175170}
176171
177- func ( o * OnionAttributableErrorDecrypter ) extractPayload ( payloads [] byte ) (
178- PayloadType , [] byte , error ) {
179-
180- var payloadType PayloadType
172+ // extractPayload extracts the payload and payload origin information from the
173+ // given byte slice.
174+ func ( o * OnionAttributableErrorDecrypter ) extractPayload ( payloadBytes [] byte ) (
175+ payloadSource , [] byte , error ) {
181176
182- switch payloads [0 ] {
183- case payloadFinal , payloadIntermediate :
184- payloadType = PayloadType (payloads [0 ])
177+ source := payloadSource (payloadBytes [0 ])
185178
186- default :
187- return 0 , nil , errors .New ("invalid payload type" )
179+ // Validate source indicator.
180+ if source != payloadErrorNode && source != payloadIntermediateNode {
181+ return 0 , nil , errors .New ("invalid payload source indicator" )
188182 }
189183
184+ // Extract payload.
190185 payload := make ([]byte , o .payloadDataLen )
191- copy (payload , payloads [1 :o .payloadLen ])
186+ copy (payload , payloadBytes [1 :o .payloadLen ])
192187
193- return payloadType , payload , nil
188+ return source , payload , nil
194189}
0 commit comments