|
| 1 | +import pytest |
| 2 | +from slacktools.authorization import verify_signature, make_signature, SignatureVersionException |
| 3 | +from time import time |
| 4 | + |
| 5 | +def test_verify_signature(): |
| 6 | + with pytest.raises(ValueError): |
| 7 | + verify_signature(None, 1111, 'string', 'v0=ayy') |
| 8 | + with pytest.raises(ValueError): |
| 9 | + verify_signature('secret', None, 'string', 'v0=ayy') |
| 10 | + with pytest.raises(ValueError): |
| 11 | + verify_signature('secret', 1111, None, 'v0=ayy') |
| 12 | + with pytest.raises(ValueError): |
| 13 | + verify_signature('secret', 1111, 'body', None) |
| 14 | + with pytest.raises(SignatureVersionException): |
| 15 | + verify_signature('secret', 1111, 'body', 'something bogus') |
| 16 | + |
| 17 | + ss = '8f742231b10e8888abcd99yyyzzz85a5' |
| 18 | + assert verify_signature(signing_secret=ss, |
| 19 | + request_timestamp=1531420618, |
| 20 | + body='token=xyzz0WbapA4vBCDEFasx0q6G&team_id=T1DC2JH3J&team_domain=testteamnow&channel_id=G8PSS9T3V&channel_name=foobar&user_id=U2CERLKJA&user_name=roadrunner&command=%2Fwebhook-collect&text=&response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2FT1DC2JH3J%2F397700885554%2F96rGlfmibIGlgcZRskXaIFfN&trigger_id=398738663015.47445629121.803a0bc887a14d10d2c447fce8b6703c', |
| 21 | + signature='v0=a2114d57b48eac39b9ad189dd8316235a7b4a8d21a10bd27519666489c69b503', |
| 22 | + current_timestamp=1531420618) |
| 23 | + |
| 24 | + # bogus key |
| 25 | + assert not verify_signature(signing_secret='bogus', |
| 26 | + request_timestamp=1531420618, |
| 27 | + body='token=xyzz0WbapA4vBCDEFasx0q6G&team_id=T1DC2JH3J&team_domain=testteamnow&channel_id=G8PSS9T3V&channel_name=foobar&user_id=U2CERLKJA&user_name=roadrunner&command=%2Fwebhook-collect&text=&response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2FT1DC2JH3J%2F397700885554%2F96rGlfmibIGlgcZRskXaIFfN&trigger_id=398738663015.47445629121.803a0bc887a14d10d2c447fce8b6703c', |
| 28 | + signature='v0=a2114d57b48eac39b9ad189dd8316235a7b4a8d21a10bd27519666489c69b503', |
| 29 | + current_timestamp=1531420618) |
| 30 | + |
| 31 | + # replay attacks |
| 32 | + assert not verify_signature(signing_secret=ss, |
| 33 | + request_timestamp=1531420618, |
| 34 | + body='token=xyzz0WbapA4vBCDEFasx0q6G&team_id=T1DC2JH3J&team_domain=testteamnow&channel_id=G8PSS9T3V&channel_name=foobar&user_id=U2CERLKJA&user_name=roadrunner&command=%2Fwebhook-collect&text=&response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2FT1DC2JH3J%2F397700885554%2F96rGlfmibIGlgcZRskXaIFfN&trigger_id=398738663015.47445629121.803a0bc887a14d10d2c447fce8b6703c', |
| 35 | + signature='v0=a2114d57b48eac39b9ad189dd8316235a7b4a8d21a10bd27519666489c69b503', |
| 36 | + current_timestamp=1531420618 + (60*6)) |
| 37 | + |
| 38 | + t = int(time()) |
| 39 | + s1 = make_signature(ss, t, 'ayy lmao') |
| 40 | + |
| 41 | + assert verify_signature(signing_secret=ss, |
| 42 | + request_timestamp=t, |
| 43 | + body='ayy lmao', |
| 44 | + signature=s1) |
0 commit comments