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

Commit 3ec216e

Browse files
committed
Merge branch 'additional-key-tests'
2 parents 7198be9 + 23d8cd4 commit 3ec216e

4 files changed

Lines changed: 131 additions & 0 deletions

File tree

httpsig/tests/rsa_private_2.pem

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpQIBAAKCAQEA42O9foFVWSgIjh+uUn3Up2hF54tbv48deni0ju+kFqYJVzxw
3+
G23fFSplbhUzL1eilBLRQWC18fGKe1Ae28mgfvtjHM+oN3omuKZMyqzTppOQKMt8
4+
GifGiX9mzdaOhYDozkER16b4UptFuUYYeOZR397jpvQD485YZ/bQoZRoBe641HWe
5+
MeryU/4ByIFnJXLnezURe+SbIlQWmt87FPrTVAuCMFP9IlN8fGBZ5DOeudkrW/vd
6+
Hkh9MG+CGjiNAFDgko0zJr24YS0KotCGA8g/0ARs5KWnIRpiAkvJD9WrLORfLeM/
7+
3GDWVO9bg4bDjh53ktSmMegUlXZEU4mYtMSorwIDAQABAoIBAQCMQbFYnp3uaGse
8+
fxwfdc39lKvJroPhHH2qVVnJ8Lbd4XxRes4LnTHE9GmsBReVVBDMFO9NzEFuAvbQ
9+
KRNfrnZ43Ma9trijv4yyyKEFQqUqUkrRXvIlj/M+TH805+rxHhp7XleLFUqGaZAQ
10+
P9RIfohx9iGlkU307gpJ1kvJ3qhrPzLM1oaMIGzB26LnUeiFRx2nhi2mMv/wqkhm
11+
muZ+vFLABJQu+CLDAz112EwkjLyhzv+aGVEdpNU6jVeG7ej9Bxm5chau9SIWj4Sg
12+
Eg6Jq/YswQ1QFb/RBoNuftr7Pr8x+DnOx0AW4P/nrqsVvmCf2QKhHE+bB01IvMn9
13+
F8Ss97DBAoGBAPK0QcOGwLYTYkzcRSuA4RWlUq9huQ96Ssy3y5vwgrzosfV1T9Y/
14+
yF6vwijZeTV/B/Ew/pBcRPgEl1exNibByg0qPApfL9V9xv+oMjEZr5WQoeQhff8D
15+
hpeP1znbNZKaJzFAAHE1p8mAmSPjggKd+M1F/zH86sads2istp7kE5oNAoGBAO/Y
16+
tW259w9mtEx82Pw3zGsMhn+ca6Vetn+igthhmfjBBm+TrKVe1RTTN+Pz7JxOp3jU
17+
wVhdw8Sa7pigMpSVDvcSHXt0cVs9d5pOoEQFInGnC9Y4A9auvL+5uT/AspKQqlwJ
18+
8lE4ugU5xelfnd4UnTbTZsA0pEmpRWYz9cUleUqrAoGBAJb3MtTpc+ONiR6gANJ/
19+
lwJ81ELNOWx8OBzA0oCMCPZyk4dH0kJFaGAlWVNJetCg1JLdU+r9ydSwHmdojnNr
20+
JUAtHi2hacKVOvv5ZkcOYB5bWafqgVHnooeR7GFLjjZDds92rQ++PUDkod0l/c+c
21+
7Y7Z1FQGqw6iN1+L1whcfCjdAoGALQwhv1MfQQhEMt18D5sXTL/UfyFM4olwc3Z9
22+
ZtCmD5+Jaulskr7F/JxTMgA9X3oyYDJtggBSZZnH2Gi2N0vrvKHtYaOUKtPXo+bC
23+
mSPxvTDnuztYFTlKgCQM1BmIMJj1NkYz+edSoOqh7lwkFXL/uC1qbg01EhS10SVP
24+
MtD///MCgYEA4dMkdsM4pDauvHsfiGH0kuSV8doWpyZIcRXpZk5aSVKxQY1X0RXu
25+
ra38P+PzSfAx1Wpo1tU5k+I0aRKImZv7EB7gwrsGnpFoDL5VzTfJrZh8u9TKrqaz
26+
RuPfYlljHQ7GXO528c6ePdaaDCwNvtqAXRPm0AFiemaQP5s5cc2u2l8=
27+
-----END RSA PRIVATE KEY-----

httpsig/tests/rsa_public_2.pem

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA42O9foFVWSgIjh+uUn3U
3+
p2hF54tbv48deni0ju+kFqYJVzxwG23fFSplbhUzL1eilBLRQWC18fGKe1Ae28mg
4+
fvtjHM+oN3omuKZMyqzTppOQKMt8GifGiX9mzdaOhYDozkER16b4UptFuUYYeOZR
5+
397jpvQD485YZ/bQoZRoBe641HWeMeryU/4ByIFnJXLnezURe+SbIlQWmt87FPrT
6+
VAuCMFP9IlN8fGBZ5DOeudkrW/vdHkh9MG+CGjiNAFDgko0zJr24YS0KotCGA8g/
7+
0ARs5KWnIRpiAkvJD9WrLORfLeM/3GDWVO9bg4bDjh53ktSmMegUlXZEU4mYtMSo
8+
rwIDAQAB
9+
-----END PUBLIC KEY-----

httpsig/tests/test_signature.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ def setUp(self):
3535
with open(self.key_path_1024, 'rb') as f:
3636
self.key_1024 = f.read()
3737

38+
self.other_key_path = os.path.join(
39+
os.path.dirname(__file__), 'rsa_private_2.pem')
40+
with open(self.other_key_path, 'rb') as f:
41+
self.other_key = f.read()
42+
3843
def test_default(self):
3944
hs = sign.HeaderSigner(key_id='Test', secret=self.key_2048, sign_algorithm=PSS(hash_algorithm="sha512", salt_length=0))
4045
unsigned = {
@@ -53,6 +58,25 @@ def test_default(self):
5358
self.assertEqual(params['algorithm'], 'hs2019')
5459
self.assertEqual(params['signature'], 'T8+Cj3Zp2cBDm2r8/loPgfHUSSFXXyZJNxxbNx1NvKVz/r5T4z6pVxhl9rqk8WfYHMdlh2aT5hCrYKvhs88Jy0DDmeUP4nELWRsO1BF0oAqHfcrbEikZQL7jA6z0guVaLr0S5QRGmd1K5HUEkP/vYEOns+FRL+JrFG4dNJNESvG5iyKUoaXfoZCFdqtzLlIteEAL7dW/kaX/dE116wfpbem1eCABuGopRhuFtjqLKVjuUVwyP/zSYTqd9j+gDhinkAifTJPxbGMh0b5LZdNCqw5irT9NkTcTFRXDp8ioX8r805Z9QhjT7H+rSo350U2LsAFoQ9ttryPBOoMPCiQTlw==') # noqa: E501
5560

61+
def test_other_default(self):
62+
hs = sign.HeaderSigner(key_id='Test', secret=self.other_key)
63+
unsigned = {
64+
'Date': self.header_date
65+
}
66+
signed = hs.sign(unsigned)
67+
self.assertIn('Date', signed)
68+
self.assertEqual(unsigned['Date'], signed['Date'])
69+
self.assertIn('Authorization', signed)
70+
auth = parse_authorization_header(signed['authorization'])
71+
params = auth[1]
72+
self.assertIn('keyId', params)
73+
self.assertIn('algorithm', params)
74+
self.assertIn('signature', params)
75+
self.assertEqual(params['keyId'], 'Test')
76+
self.assertEqual(params['algorithm'], 'rsa-sha256')
77+
self.assertEqual(params['signature'],
78+
'GY3Yyuj92xScIb2QbDUWxIW/fg7ZP8rxURltbpouTGxTo+ZRDHO9BbfN6YQeP1Z0VJBEA0dgynuzQs2bVBJavTcoEgvttzznAIj9ypfI6n35Uzeid+9gepa0pfBom6qnoNbblMNsHt7hXBfrpe5EwfEKmpqZgivjJZ53p9gD1NAhlioty/m1MFu1J5wEjpgX466R2PmR10yl22rMcv3mbEPV5ijqLTViDW18DchLyHR+fItzRtor2yLv7QgBSw+gVJu0dVeKeL9kwPxsaurzODgYsFsjZOJvuP9nKPJOdH3PI6eDhpfwjmwhjbSTte3bjkbw0w5tlWuA8m5l1gzyBQ==')
79+
5680
def test_basic(self):
5781
hs = sign.HeaderSigner(key_id='Test', secret=self.key_2048, sign_algorithm=PSS(salt_length=0), headers=[
5882
'(request-target)',

httpsig/tests/test_verify.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from httpsig.sign_algorithms import PSS
88
from httpsig.verify import HeaderVerifier, Verifier
99

10+
1011
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
1112

1213

@@ -242,3 +243,73 @@ def setUp(self):
242243
self.sign_secret = private_key
243244
self.verify_secret = public_key
244245
self.sign_algorithm = PSS(salt_length=0)
246+
247+
248+
class TestSignAndVerify(unittest.TestCase):
249+
header_date = 'Thu, 05 Jan 2014 21:31:40 GMT'
250+
sign_header = 'authorization'
251+
252+
def setUp(self):
253+
with open(os.path.join(os.path.dirname(__file__), 'rsa_private.pem'), 'rb') as f:
254+
self.private_key = f.read()
255+
256+
with open(os.path.join(os.path.dirname(__file__), 'rsa_public.pem'), 'rb') as f:
257+
self.public_key = f.read()
258+
259+
with open(os.path.join(os.path.dirname(__file__), 'rsa_private_2.pem'), 'rb') as f:
260+
self.other_private_key = f.read()
261+
262+
with open(os.path.join(os.path.dirname(__file__), 'rsa_public_2.pem'), 'rb') as f:
263+
self.other_public_key = f.read()
264+
265+
def test_default(self):
266+
unsigned = {
267+
'Date': self.header_date
268+
}
269+
270+
hs = HeaderSigner(
271+
key_id="Test", secret=self.private_key, algorithm='rsa-sha1',
272+
sign_header=self.sign_header)
273+
signed = hs.sign(unsigned)
274+
hv = HeaderVerifier(
275+
headers=signed, secret=self.public_key, sign_header=self.sign_header)
276+
self.assertTrue(hv.verify())
277+
278+
def test_other_default(self):
279+
unsigned = {
280+
'Date': self.header_date
281+
}
282+
283+
hs = HeaderSigner(
284+
key_id="Test", secret=self.other_private_key, algorithm='rsa-sha256',
285+
sign_header=self.sign_header)
286+
signed = hs.sign(unsigned)
287+
hv = HeaderVerifier(
288+
headers=signed, secret=self.other_public_key, sign_header=self.sign_header)
289+
self.assertTrue(hv.verify())
290+
291+
def test_mix_default_1_256(self):
292+
unsigned = {
293+
'Date': self.header_date
294+
}
295+
296+
hs = HeaderSigner(
297+
key_id="Test", secret=self.private_key, algorithm='rsa-sha1',
298+
sign_header=self.sign_header)
299+
signed = hs.sign(unsigned)
300+
hv = HeaderVerifier(
301+
headers=signed, secret=self.other_public_key, sign_header=self.sign_header)
302+
self.assertFalse(hv.verify())
303+
304+
def test_mix_default_256_1(self):
305+
unsigned = {
306+
'Date': self.header_date
307+
}
308+
309+
hs = HeaderSigner(
310+
key_id="Test", secret=self.other_private_key, algorithm='rsa-sha256',
311+
sign_header=self.sign_header)
312+
signed = hs.sign(unsigned)
313+
hv = HeaderVerifier(
314+
headers=signed, secret=self.public_key, sign_header=self.sign_header)
315+
self.assertFalse(hv.verify())

0 commit comments

Comments
 (0)