Skip to content

Commit 7e36ef3

Browse files
committed
Added message transformation test cases
1 parent 7d51b9c commit 7e36ef3

File tree

1 file changed

+89
-1
lines changed

1 file changed

+89
-1
lines changed

signatures_test.go

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,8 @@ func TestSignRequestDiscardSig(t *testing.T) {
615615

616616
func readRequest(s string) *http.Request {
617617
in := strings.NewReader(s)
618-
req, _ := http.ReadRequest(bufio.NewReader(in))
618+
req, err := http.ReadRequest(bufio.NewReader(in))
619+
_ = err
619620
return req
620621
}
621622

@@ -1703,3 +1704,90 @@ func TestSignatureContext(t *testing.T) {
17031704
err = VerifyResponse("sig2", *verifier3, res, nil)
17041705
assert.Error(t, err, "should have failed to verify response")
17051706
}
1707+
1708+
var httpTransform1 = `GET /demo?name1=Value1&Name2=value2 HTTP/1.1
1709+
Host: example.org
1710+
Date: Fri, 15 Jul 2022 14:24:55 GMT
1711+
Accept: application/json
1712+
Accept: */*
1713+
Signature-Input: transform=("@method" "@path" "@authority" "accept");created=1618884473;keyid="test-key-ed25519"
1714+
Signature: transform=:ZT1kooQsEHpZ0I1IjCqtQppOmIqlJPeo7DHR3SoMn0s5JZ1eRGS0A+vyYP9t/LXlh5QMFFQ6cpLt2m0pmj3NDA==:
1715+
1716+
`
1717+
1718+
var httpTransform2 = `GET /demo?name1=Value1&Name2=value2&param=added HTTP/1.1
1719+
Host: example.org
1720+
Date: Fri, 15 Jul 2022 14:24:55 GMT
1721+
Accept: application/json
1722+
Accept: */*
1723+
Accept-Language: en-US,en;q=0.5
1724+
Signature-Input: transform=("@method" "@path" "@authority" "accept");created=1618884473;keyid="test-key-ed25519"
1725+
Signature: transform=:ZT1kooQsEHpZ0I1IjCqtQppOmIqlJPeo7DHR3SoMn0s5JZ1eRGS0A+vyYP9t/LXlh5QMFFQ6cpLt2m0pmj3NDA==:
1726+
1727+
`
1728+
1729+
var httpTransform3 = `GET /demo?name1=Value1&Name2=value2 HTTP/1.1
1730+
Host: example.org
1731+
Referer: https://developer.example.org/demo
1732+
Accept: application/json, */*
1733+
Signature-Input: transform=("@method" "@path" "@authority" "accept");created=1618884473;keyid="test-key-ed25519"
1734+
Signature: transform=:ZT1kooQsEHpZ0I1IjCqtQppOmIqlJPeo7DHR3SoMn0s5JZ1eRGS0A+vyYP9t/LXlh5QMFFQ6cpLt2m0pmj3NDA==:
1735+
1736+
`
1737+
1738+
var httpTransform4 = `GET /demo?name1=Value1&Name2=value2 HTTP/1.1
1739+
Accept: application/json
1740+
Accept: */*
1741+
Date: Fri, 15 Jul 2022 14:24:55 GMT
1742+
Host: example.org
1743+
Signature-Input: transform=("@method" "@path" "@authority" "accept");created=1618884473;keyid="test-key-ed25519"
1744+
Signature: transform=:ZT1kooQsEHpZ0I1IjCqtQppOmIqlJPeo7DHR3SoMn0s5JZ1eRGS0A+vyYP9t/LXlh5QMFFQ6cpLt2m0pmj3NDA==:
1745+
1746+
`
1747+
1748+
var httpTransform5 = `POST /demo?name1=Value1&Name2=value2 HTTP/1.1
1749+
Host: example.com
1750+
Date: Fri, 15 Jul 2022 14:24:55 GMT
1751+
Accept: application/json
1752+
Accept: */*
1753+
Signature-Input: transform=("@method" "@path" "@authority" "accept");created=1618884473;keyid="test-key-ed25519"
1754+
Signature: transform=:ZT1kooQsEHpZ0I1IjCqtQppOmIqlJPeo7DHR3SoMn0s5JZ1eRGS0A+vyYP9t/LXlh5QMFFQ6cpLt2m0pmj3NDA==:
1755+
1756+
`
1757+
1758+
var httpTransform6 = `GET /demo?name1=Value1&Name2=value2 HTTP/1.1
1759+
Host: example.org
1760+
Date: Fri, 15 Jul 2022 14:24:55 GMT
1761+
Accept: */*
1762+
Accept: application/json
1763+
Signature-Input: transform=("@method" "@path" "@authority" "accept");created=1618884473;keyid="test-key-ed25519"
1764+
Signature: transform=:ZT1kooQsEHpZ0I1IjCqtQppOmIqlJPeo7DHR3SoMn0s5JZ1eRGS0A+vyYP9t/LXlh5QMFFQ6cpLt2m0pmj3NDA==:
1765+
1766+
`
1767+
1768+
func testOneTransformation(t *testing.T, msg string, verifies bool) {
1769+
// Initial verification successful
1770+
prvKey, err := parseEdDSAPrivateKeyFromPemStr(ed25519PrvKey)
1771+
if err != nil {
1772+
t.Errorf("cannot parse public key: %v", err)
1773+
}
1774+
pubKey := prvKey.Public().(ed25519.PublicKey)
1775+
verifier, err := NewEd25519Verifier("test-key-ed25519", pubKey, NewVerifyConfig().SetVerifyCreated(false), *NewFields())
1776+
assert.NoError(t, err, "could not create verifier")
1777+
req := readRequest(msg)
1778+
err = VerifyRequest("transform", *verifier, req)
1779+
if verifies {
1780+
assert.NoError(t, err, "failed to verify request")
1781+
} else {
1782+
assert.Error(t, err, "should fail to verify request")
1783+
}
1784+
}
1785+
1786+
func TestTransformations(t *testing.T) {
1787+
testOneTransformation(t, httpTransform1, true)
1788+
testOneTransformation(t, httpTransform2, true)
1789+
testOneTransformation(t, httpTransform3, true)
1790+
testOneTransformation(t, httpTransform4, true)
1791+
testOneTransformation(t, httpTransform5, false)
1792+
testOneTransformation(t, httpTransform6, false)
1793+
}

0 commit comments

Comments
 (0)