@@ -14,6 +14,7 @@ import (
1414 "encoding/base64"
1515 "encoding/pem"
1616 "fmt"
17+ "github.com/stretchr/testify/assert"
1718 "net/http"
1819 "strings"
1920 "testing"
@@ -549,9 +550,7 @@ func TestSignRequest(t *testing.T) {
549550
550551func makeRSAPSSSigner (t * testing.T , config SignConfig , fields Fields ) Signer {
551552 prvKey , err := loadRSAPSSPrivateKey (rsaPSSPrvKey )
552- if err != nil {
553- t .Errorf ("cannot parse private key: %v" , err )
554- }
553+ assert .NoError (t , err , "cannot parse private key" )
555554 signer , _ := NewRSAPSSSigner ("test-key-rsa-pss" , * prvKey , & config , fields )
556555 return * signer
557556}
@@ -637,13 +636,9 @@ func TestSignAndVerifyHMAC(t *testing.T) {
637636 req .Header .Add ("Signature" , sig )
638637 req .Header .Add ("Signature-Input" , sigInput )
639638 verifier , err := NewHMACSHA256Verifier ("test-shared-secret" , key , NewVerifyConfig ().SetVerifyCreated (false ), fields )
640- if err != nil {
641- t .Errorf ("could not generate Verifier: %s" , err )
642- }
639+ assert .NoError (t , err , "could not generate Verifier" )
643640 err = VerifyRequest (signatureName , * verifier , req )
644- if err != nil {
645- t .Errorf ("verification error: %s" , err )
646- }
641+ assert .NoError (t , err , "verification error" )
647642}
648643
649644func TestSignAndVerifyHMACBad (t * testing.T ) {
@@ -658,13 +653,9 @@ func TestSignAndVerifyHMACBad(t *testing.T) {
658653 req .Header .Add ("Signature-Input" , sigInput )
659654 badkey := append (key , byte (0x77 ))
660655 verifier , err := NewHMACSHA256Verifier ("test-shared-secret" , badkey , NewVerifyConfig ().SetVerifyCreated (false ), fields )
661- if err != nil {
662- t .Errorf ("could not generate Verifier: %s" , err )
663- }
656+ assert .NoError (t , err , "could not generate Verifier" )
664657 err = VerifyRequest (signatureName , * verifier , req )
665- if err == nil {
666- t .Errorf ("verification should have failed" )
667- }
658+ assert .Error (t , err , "verification should have failed" )
668659}
669660
670661func TestCreated (t * testing.T ) {
@@ -675,16 +666,20 @@ func TestCreated(t *testing.T) {
675666 signConfig := NewSignConfig ().SignCreated (true ).setFakeCreated (createdTime )
676667 signer , _ := NewHMACSHA256Signer ("test-shared-secret" , key , signConfig , fields )
677668 res := readResponse (httpres2 )
669+ nowStr := time .Now ().UTC ().Format (http .TimeFormat )
670+ res .Header .Set ("Date" , nowStr )
678671 sigInput , sig , _ := SignResponse (signatureName , * signer , res )
679672
680673 res2 := readResponse (httpres2 )
674+ res2 .Header .Set ("Date" , nowStr )
681675 res2 .Header .Add ("Signature" , sig )
682676 res2 .Header .Add ("Signature-Input" , sigInput )
683677 verifier , err := NewHMACSHA256Verifier ("test-shared-secret" , key , verifyConfig , fields )
684678 if err != nil {
685679 t .Errorf ("could not generate Verifier: %s" , err )
686680 }
687681 err = VerifyResponse (signatureName , * verifier , res2 )
682+
688683 if wantSuccess && err != nil {
689684 t .Errorf ("verification error: %s" , err )
690685 }
@@ -711,13 +706,21 @@ func TestCreated(t *testing.T) {
711706 testNewWindow2 := func (t * testing.T ) {
712707 testOnceWithConfig (t , now + 15_000 , NewVerifyConfig ().SetNotNewerThan (14_000 * time .Second ), false )
713708 }
709+ testDate := func (t * testing.T ) {
710+ testOnceWithConfig (t , now , NewVerifyConfig ().SetVerifyDateWithin (100 * time .Millisecond ), true )
711+ }
712+ testDateFail := func (t * testing.T ) {
713+ testOnceWithConfig (t , now , NewVerifyConfig ().SetVerifyCreated (false ).SetVerifyDateWithin (100 * time .Millisecond ), false )
714+ }
714715 t .Run ("in window" , testInWindow )
715716 t .Run ("older" , testOlder )
716717 t .Run ("newer" , testNewer )
717718 t .Run ("older, smaller than window" , testOldWindow1 )
718719 t .Run ("older, larger than window" , testOldWindow2 )
719720 t .Run ("newer, smaller than window" , testNewWindow1 )
720721 t .Run ("newer, larger than window" , testNewWindow2 )
722+ t .Run ("verify Date header within window" , testDate )
723+ t .Run ("verify logic requires to verify Created" , testDateFail )
721724}
722725
723726func TestSignAndVerifyResponseHMAC (t * testing.T ) {
0 commit comments