Skip to content
This repository was archived by the owner on Apr 13, 2024. It is now read-only.

Commit b347003

Browse files
committed
Merge branch 'additional-key-tests'
2 parents 18138b8 + 23d8cd4 commit b347003

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

httpsig/tests/test_signature.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,25 @@ def test_default(self):
5353
self.assertEqual(params['algorithm'], 'hs2019')
5454
self.assertEqual(params['signature'], 'T8+Cj3Zp2cBDm2r8/loPgfHUSSFXXyZJNxxbNx1NvKVz/r5T4z6pVxhl9rqk8WfYHMdlh2aT5hCrYKvhs88Jy0DDmeUP4nELWRsO1BF0oAqHfcrbEikZQL7jA6z0guVaLr0S5QRGmd1K5HUEkP/vYEOns+FRL+JrFG4dNJNESvG5iyKUoaXfoZCFdqtzLlIteEAL7dW/kaX/dE116wfpbem1eCABuGopRhuFtjqLKVjuUVwyP/zSYTqd9j+gDhinkAifTJPxbGMh0b5LZdNCqw5irT9NkTcTFRXDp8ioX8r805Z9QhjT7H+rSo350U2LsAFoQ9ttryPBOoMPCiQTlw==') # noqa: E501
5555

56+
def test_other_default(self):
57+
hs = sign.HeaderSigner(key_id='Test', secret=self.key_1024, sign_algorithm=PSS(hash_algorithm="sha512", salt_length=0))
58+
unsigned = {
59+
'Date': self.header_date
60+
}
61+
signed = hs.sign(unsigned)
62+
self.assertIn('Date', signed)
63+
self.assertEqual(unsigned['Date'], signed['Date'])
64+
self.assertIn('Authorization', signed)
65+
auth = parse_authorization_header(signed['authorization'])
66+
params = auth[1]
67+
self.assertIn('keyId', params)
68+
self.assertIn('algorithm', params)
69+
self.assertIn('signature', params)
70+
self.assertEqual(params['keyId'], 'Test')
71+
self.assertEqual(params['algorithm'], 'hs2019')
72+
self.assertEqual(params['signature'],
73+
'Gw8FOaXNxqwJHXwJ30OKiMFpK5zP916CFtzK7/biKi9NppjGAlpUfFKqp5kK+bFRyXxqUzQ1x5cbSeFzRWnqodNNO60ApYbOVD7ePqJfZ3DJFAxYOMzoECzc+lyVskSHKC0Ue8aYiV66gXTuY7hrEIqUsK3To/DhSNgO8csdzwg=')
74+
5675
def test_basic(self):
5776
hs = sign.HeaderSigner(key_id='Test', secret=self.key_2048, sign_algorithm=PSS(salt_length=0), headers=[
5877
'(request-target)',

httpsig/tests/test_verify.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,3 +258,73 @@ def setUp(self):
258258
self.sign_secret = private_key
259259
self.verify_secret = public_key
260260
self.sign_algorithm = PSS(salt_length=0)
261+
262+
263+
class TestSignAndVerify(unittest.TestCase):
264+
header_date = 'Thu, 05 Jan 2014 21:31:40 GMT'
265+
sign_header = 'authorization'
266+
267+
def setUp(self):
268+
with open(os.path.join(os.path.dirname(__file__), 'rsa_private_1024.pem'), 'rb') as f:
269+
self.private_key = f.read()
270+
271+
with open(os.path.join(os.path.dirname(__file__), 'rsa_public_1024.pem'), 'rb') as f:
272+
self.public_key = f.read()
273+
274+
with open(os.path.join(os.path.dirname(__file__), 'rsa_private_2048.pem'), 'rb') as f:
275+
self.other_private_key = f.read()
276+
277+
with open(os.path.join(os.path.dirname(__file__), 'rsa_public_2048.pem'), 'rb') as f:
278+
self.other_public_key = f.read()
279+
280+
def test_default(self):
281+
unsigned = {
282+
'Date': self.header_date
283+
}
284+
285+
hs = HeaderSigner(
286+
key_id="Test", secret=self.private_key, algorithm='rsa-sha1',
287+
sign_header=self.sign_header)
288+
signed = hs.sign(unsigned)
289+
hv = HeaderVerifier(
290+
headers=signed, secret=self.public_key, sign_header=self.sign_header)
291+
self.assertTrue(hv.verify())
292+
293+
def test_other_default(self):
294+
unsigned = {
295+
'Date': self.header_date
296+
}
297+
298+
hs = HeaderSigner(
299+
key_id="Test", secret=self.other_private_key, algorithm='rsa-sha256',
300+
sign_header=self.sign_header)
301+
signed = hs.sign(unsigned)
302+
hv = HeaderVerifier(
303+
headers=signed, secret=self.other_public_key, sign_header=self.sign_header)
304+
self.assertTrue(hv.verify())
305+
306+
def test_mix_default_1_256(self):
307+
unsigned = {
308+
'Date': self.header_date
309+
}
310+
311+
hs = HeaderSigner(
312+
key_id="Test", secret=self.private_key, algorithm='rsa-sha1',
313+
sign_header=self.sign_header)
314+
signed = hs.sign(unsigned)
315+
hv = HeaderVerifier(
316+
headers=signed, secret=self.other_public_key, sign_header=self.sign_header)
317+
self.assertFalse(hv.verify())
318+
319+
def test_mix_default_256_1(self):
320+
unsigned = {
321+
'Date': self.header_date
322+
}
323+
324+
hs = HeaderSigner(
325+
key_id="Test", secret=self.other_private_key, algorithm='rsa-sha256',
326+
sign_header=self.sign_header)
327+
signed = hs.sign(unsigned)
328+
hv = HeaderVerifier(
329+
headers=signed, secret=self.public_key, sign_header=self.sign_header)
330+
self.assertFalse(hv.verify())

0 commit comments

Comments
 (0)