@@ -171,7 +171,8 @@ func generateSigParams(config *SignConfig, keyID, alg string, foreignSigner inte
171171// SignRequest signs an HTTP request. Returns the Signature-Input and the Signature header values.
172172//
173173func SignRequest (signatureName string , signer Signer , req * http.Request ) (signatureInputHeader , signature string , err error ) {
174- signatureInputHeader , signature , _ , err = signRequestDebug (signatureName , signer , req )
174+ signatureInputHeader , signature , signatureInput , err := signRequestDebug (signatureName , signer , req )
175+ _ = signatureInput
175176 return
176177}
177178
@@ -230,20 +231,24 @@ func addPseudoHeaders(message *parsedMessage, rr *requestResponse, fields Fields
230231
231232//
232233// VerifyRequest verifies a signed HTTP request. Returns an error if verification failed for any reason, otherwise nil.
233- //
234- func VerifyRequest (signatureName string , verifier Verifier , req * http.Request ) (err error ) {
234+ func VerifyRequest (signatureName string , verifier Verifier , req * http.Request ) error {
235+ _ , err := verifyRequestDebug (signatureName , verifier , req )
236+ return err
237+ }
238+
239+ func verifyRequestDebug (signatureName string , verifier Verifier , req * http.Request ) (signatureInput string , err error ) {
235240 if req == nil {
236- return fmt .Errorf ("nil request" )
241+ return "" , fmt .Errorf ("nil request" )
237242 }
238243 if signatureName == "" {
239- return fmt .Errorf ("empty signature name" )
244+ return "" , fmt .Errorf ("empty signature name" )
240245 }
241246 if verifier .config .requestResponse != nil {
242- return fmt .Errorf ("use request-response only to verify responses" )
247+ return "" , fmt .Errorf ("use request-response only to verify responses" )
243248 }
244249 parsedMessage , err := parseRequest (req )
245250 if err != nil {
246- return err
251+ return "" , err
247252 }
248253 return verifyMessage (* verifier .config , signatureName , verifier , * parsedMessage , verifier .fields )
249254}
@@ -352,48 +357,47 @@ func VerifyResponse(signatureName string, verifier Verifier, res *http.Response)
352357 return err
353358 }
354359 extendedFields := addPseudoHeaders (parsedMessage , verifier .config .requestResponse , verifier .fields )
355- return verifyMessage (* verifier .config , signatureName , verifier , * parsedMessage , extendedFields )
360+ _ , err = verifyMessage (* verifier .config , signatureName , verifier , * parsedMessage , extendedFields )
361+ return err
356362}
357363
358- func verifyMessage (config VerifyConfig , name string , verifier Verifier , message parsedMessage , fields Fields ) error {
364+ func verifyMessage (config VerifyConfig , name string , verifier Verifier , message parsedMessage , fields Fields ) ( string , error ) {
359365 wsi , err := message .getDictHeader ("signature-input" , name )
360366 if err != nil {
361- return fmt .Errorf ("missing \" signature-input\" header, or cannot find signature \" %s\" : %w" , name , err )
367+ return "" , fmt .Errorf ("missing \" signature-input\" header, or cannot find signature \" %s\" : %w" , name , err )
362368 }
363369 if len (wsi ) > 1 {
364- return fmt .Errorf ("multiple \" signature-header\" values for %s" , name )
370+ return "" , fmt .Errorf ("multiple \" signature-header\" values for %s" , name )
365371 }
366372 wantSignatureInput := wsi [0 ]
367373 ws , err := message .getDictHeader ("signature" , name )
368374 if err != nil {
369- return fmt .Errorf ("missing \" signature\" header" )
375+ return "" , fmt .Errorf ("missing \" signature\" header" )
370376 }
371377 if len (ws ) > 1 {
372- return fmt .Errorf ("multiple \" signature\" values for %s" , name )
378+ return "" , fmt .Errorf ("multiple \" signature\" values for %s" , name )
373379 }
374380 wantSignature := ws [0 ]
375- //delete(message.components, *fromDictHeader("signature-input", name))
376- //delete(message.components, *fromDictHeader("signature", name))
377381 wantSigRaw , err := parseWantSignature (wantSignature )
378382 if err != nil {
379- return err
383+ return "" , err
380384 }
381385 psiSig , err := parseSignatureInput (wantSignatureInput , name )
382386 if err != nil {
383- return err
387+ return "" , err
384388 }
385389 if ! (psiSig .fields .contains (& fields )) {
386- return fmt .Errorf ("actual signature does not cover all required fields" )
390+ return "" , fmt .Errorf ("actual signature does not cover all required fields" )
387391 }
388392 err = applyVerificationPolicy (verifier , psiSig , config )
389393 if err != nil {
390- return err
394+ return "" , err
391395 }
392396 signatureInput , err := generateSignatureInput (message , psiSig .fields , psiSig .origSigParams )
393397 if err != nil {
394- return err
398+ return "" , err
395399 }
396- return verifySignature (verifier , signatureInput , wantSigRaw )
400+ return signatureInput , verifySignature (verifier , signatureInput , wantSigRaw )
397401}
398402
399403func applyVerificationPolicy (verifier Verifier , psi * psiSignature , config VerifyConfig ) error {
0 commit comments