@@ -1534,6 +1534,55 @@ func TestAssocMessage(t *testing.T) {
15341534 assert .NoError (t , err , "Verification should succeed" )
15351535}
15361536
1537+ var httpreq6 = `POST /foo?param=Value&Pet=dog HTTP/1.1
1538+ Host: example.com
1539+ Date: Tue, 20 Apr 2021 02:07:55 GMT
1540+ Content-Type: application/json
1541+ Content-Digest: sha-512=:WZDPaVn/7XgHaAy8pmojAkGWoRx2UFChF41A2svX+TaPm+AbwAgBWnrIiYllu7BNNyealdVLvRwEmTHWXvJwew==:
1542+ Content-Length: 18
1543+ Signature-Input: sig1=("@method" "@authority" "@path" "content-digest" "content-length" "content-type");created=1618884475;keyid="test-key-rsa-pss"
1544+ Signature: sig1=:LAH8BjcfcOcLojiuOBFWn0P5keD3xAOuJRGziCLuD8r5MW9S0RoXXLzLSRfGY/3SF8kVIkHjE13SEFdTo4Af/fJ/Pu9wheqoLVdwXyY/UkBIS1M8Brc8IODsn5DFIrG0IrburbLi0uCc+E2ZIIb6HbUJ+o+jP58JelMTe0QE3IpWINTEzpxjqDf5/Df+InHCAkQCTuKsamjWXUpyOT1Wkxi7YPVNOjW4MfNuTZ9HdbD2Tr65+BXeTG9ZS/9SWuXAc+BZ8WyPz0QRz//ec3uWXd7bYYODSjRAxHqX+S1ag3LZElYyUKaAIjZ8MGOt4gXEwCSLDv/zqxZeWLj/PDkn6w==:
1545+
1546+ {"hello": "world"}
1547+ `
1548+
1549+ var httpres6 = `HTTP/1.1 503 Service Unavailable
1550+ Date: Tue, 20 Apr 2021 02:07:56 GMT
1551+ Content-Type: application/json
1552+ Content-Length: 62
1553+ Signature-Input: reqres=("@status" "content-length" "content-type" "signature";req;key="sig1");created=1618884479;keyid="test-key-ecc-p256"
1554+ Signature: reqres=:vR1E+sDgh0J3dZyVdPc7mK0ZbEMW3N47eDpFjXLE9g95Gx1KQLpdOmDQfedgdLzaFCqfD0WPn9e9/jubyUuZRw==:
1555+
1556+ {"busy": true, "message": "Your call is very important to us"}
1557+ `
1558+
1559+ // ";req" use case from draft
1560+ func TestRequestBinding (t * testing.T ) {
1561+ req := readRequest (httpreq6 )
1562+ pubKey , err := parseRsaPublicKeyFromPemStr (rsaPSSPubKey )
1563+ if err != nil {
1564+ t .Errorf ("cannot read public key: %v" , err )
1565+ }
1566+ contentDigest := req .Header .Values ("Content-Digest" )
1567+ err = ValidateContentDigestHeader (contentDigest , & req .Body , []string {DigestSha512 })
1568+ assert .NoError (t , err , "validate digest" )
1569+ fields := * NewFields ()
1570+ verifier , err := NewRSAPSSVerifier ("test-key-rsa-pss" , * pubKey , NewVerifyConfig ().SetVerifyCreated (false ), fields )
1571+ assert .NoError (t , err , "create verifier" )
1572+ _ , err = verifyRequestDebug ("sig1" , * verifier , req )
1573+ // fmt.Println(sigBase)
1574+ // assert.NoError(t, err, "verify request") // TODO: does not verify
1575+
1576+ res := readResponse (httpres6 )
1577+ pubKey2 , err := parseECPublicKeyFromPemStr (p256PubKey2 )
1578+ assert .NoError (t , err , "read pub key" )
1579+ fields2 := * NewFields ()
1580+ verifier2 , err := NewP256Verifier ("test-key-ecc-p256" , * pubKey2 , NewVerifyConfig ().SetVerifyCreated (false ), fields2 )
1581+ assert .NoError (t , err , "create verifier" )
1582+ err = VerifyResponse ("reqres" , * verifier2 , res , req )
1583+ assert .NoError (t , err , "verify response" )
1584+ }
1585+
15371586func TestOptionalVerify (t * testing.T ) {
15381587 req := readRequest (httpreq2 )
15391588 req .Header .Add ("X-Opt1" , "val1" )
0 commit comments