mirror of https://gitlab.com/bashrc2/epicyon
Fix new http signature test
parent
6dc3e51550
commit
10492581ff
|
@ -18,7 +18,6 @@ from cryptography.hazmat.primitives.serialization import load_pem_public_key
|
||||||
from cryptography.hazmat.primitives.asymmetric import padding
|
from cryptography.hazmat.primitives.asymmetric import padding
|
||||||
from cryptography.hazmat.primitives import hashes
|
from cryptography.hazmat.primitives import hashes
|
||||||
from cryptography.hazmat.primitives.asymmetric import utils as hazutils
|
from cryptography.hazmat.primitives.asymmetric import utils as hazutils
|
||||||
import calendar
|
|
||||||
import base64
|
import base64
|
||||||
from time import gmtime, strftime
|
from time import gmtime, strftime
|
||||||
import datetime
|
import datetime
|
||||||
|
@ -120,11 +119,11 @@ def signPostHeadersNew(dateStr: str, privateKeyPem: str,
|
||||||
timeFormat = "%a, %d %b %Y %H:%M:%S %Z"
|
timeFormat = "%a, %d %b %Y %H:%M:%S %Z"
|
||||||
if not dateStr:
|
if not dateStr:
|
||||||
currTime = gmtime()
|
currTime = gmtime()
|
||||||
secondsSinceEpoch = int(calendar.timegm(currTime))
|
|
||||||
dateStr = strftime(timeFormat, currTime)
|
dateStr = strftime(timeFormat, currTime)
|
||||||
else:
|
else:
|
||||||
currTime = datetime.datetime.strptime(dateStr, timeFormat)
|
currTime = datetime.datetime.strptime(dateStr, timeFormat)
|
||||||
secondsSinceEpoch = int(currTime.timestamp())
|
secondsSinceEpoch = \
|
||||||
|
int((currTime - datetime.datetime(1970, 1, 1)).total_seconds())
|
||||||
keyID = httpPrefix + '://' + domain + '/users/' + nickname + '#main-key'
|
keyID = httpPrefix + '://' + domain + '/users/' + nickname + '#main-key'
|
||||||
if not messageBodyJsonStr:
|
if not messageBodyJsonStr:
|
||||||
headers = {
|
headers = {
|
||||||
|
@ -180,7 +179,7 @@ def signPostHeadersNew(dateStr: str, privateKeyPem: str,
|
||||||
}
|
}
|
||||||
signatureHeader = '; '.join(
|
signatureHeader = '; '.join(
|
||||||
[f'{k}=:{v}:' for k, v in signatureDict.items()])
|
[f'{k}=:{v}:' for k, v in signatureDict.items()])
|
||||||
return signatureIndexHeader.strip(), signatureHeader
|
return signatureIndexHeader, signatureHeader
|
||||||
|
|
||||||
|
|
||||||
def createSignedHeader(privateKeyPem: str, nickname: str,
|
def createSignedHeader(privateKeyPem: str, nickname: str,
|
||||||
|
|
23
tests.py
23
tests.py
|
@ -224,7 +224,7 @@ def testHttpSigNew():
|
||||||
# "Signature": sig
|
# "Signature": sig
|
||||||
# }
|
# }
|
||||||
dateStr = "Tue, 07 Jun 2014 20:51:35 GMT"
|
dateStr = "Tue, 07 Jun 2014 20:51:35 GMT"
|
||||||
secondsSinceEpoch = 1402170695
|
secondsSinceEpoch = 1402174295
|
||||||
domain = "example.com"
|
domain = "example.com"
|
||||||
port = 443
|
port = 443
|
||||||
headers = {
|
headers = {
|
||||||
|
@ -242,14 +242,12 @@ def testHttpSigNew():
|
||||||
debug = False
|
debug = False
|
||||||
assert verifyPostHeaders(httpPrefix, publicKeyPem, headers,
|
assert verifyPostHeaders(httpPrefix, publicKeyPem, headers,
|
||||||
boxpath, False, None,
|
boxpath, False, None,
|
||||||
messageBodyJsonStr, debug,
|
messageBodyJsonStr, debug, True)
|
||||||
True)
|
|
||||||
# make a deliberate mistake
|
# make a deliberate mistake
|
||||||
headers['Signature'] = headers['Signature'].replace('V', 'B')
|
headers['Signature'] = headers['Signature'].replace('V', 'B')
|
||||||
assert not verifyPostHeaders(httpPrefix, publicKeyPem, headers,
|
assert not verifyPostHeaders(httpPrefix, publicKeyPem, headers,
|
||||||
boxpath, False, None,
|
boxpath, False, None,
|
||||||
messageBodyJsonStr, debug,
|
messageBodyJsonStr, debug, True)
|
||||||
True)
|
|
||||||
# test signing
|
# test signing
|
||||||
bodyDigest = messageContentDigest(messageBodyJsonStr)
|
bodyDigest = messageContentDigest(messageBodyJsonStr)
|
||||||
contentLength = len(messageBodyJsonStr)
|
contentLength = len(messageBodyJsonStr)
|
||||||
|
@ -271,19 +269,18 @@ def testHttpSigNew():
|
||||||
'alg=hs2019; created=' + str(secondsSinceEpoch) + '; ' + \
|
'alg=hs2019; created=' + str(secondsSinceEpoch) + '; ' + \
|
||||||
'sig1=(*request-target, *created, host, date, ' + \
|
'sig1=(*request-target, *created, host, date, ' + \
|
||||||
'digest, content-type, content-length)'
|
'digest, content-type, content-length)'
|
||||||
signatureIndexHeader = signatureIndexHeader.strip()
|
|
||||||
if signatureIndexHeader != expectedIndexHeader:
|
if signatureIndexHeader != expectedIndexHeader:
|
||||||
print('Unexpected new http header: ' + signatureIndexHeader)
|
print('Unexpected new http header: ' + signatureIndexHeader)
|
||||||
print('Should be: ' + expectedIndexHeader)
|
print('Should be: ' + expectedIndexHeader)
|
||||||
assert signatureIndexHeader == expectedIndexHeader
|
assert signatureIndexHeader == expectedIndexHeader
|
||||||
assert signatureHeader == \
|
assert signatureHeader == \
|
||||||
'sig1=:LQU1PcJILSp1Q30GWINusfftYYKfTtam7InSu2c+ZzfGC' + \
|
'sig1=:euX3O1KSTYXN9/oR2qFezswWm9FbrjtRymK7xBpXNQvTs' + \
|
||||||
'bTSevRgifZFuG2asFi8ubG/uUVHiBwIxxIz1u/JyWC3lYIFgjQF' + \
|
'XehtrNdD8nELZKzPXMvMz7PaJd6V+fjzpHoZ9upTdqqQLK2Iwml' + \
|
||||||
'RFM6As2b/ytnMA0LQhNebvk05iUNsz5izSoNTp5h9J7+roWkl6l' + \
|
'p4BlHqW6Aopd7sZFCWFq7/Amm5oaizpp3e0jb5XISS5m3cRKuoi' + \
|
||||||
'8d5EA7vPMTQTJZnyU1cXBlvP1MtuVAKR6MbB3Aa/iZ4XOeaNK5E' + \
|
'LM0x+OudmAoYGi0TEEJk8bpnJAXfVCDfmOyL3XNqQeShQHeOANG' + \
|
||||||
'1VuPfNFrdnizIELE3nGVoVqNNImgMY3DWhtF3vvezrcT0J2vNGZ' + \
|
'okiKktj8ff+KLYLaPTAJkob1k/EhoPIkbw/YzAY8IZjWQNMkf+F' + \
|
||||||
'cvhBfgn/xeAsNxz67SIHMgiXvLL6TFqEI1en9dl9A3ihB6ZO6+W' + \
|
'JChApQ5HnDCQPwD5xV9eGzBpAf6D0G19xiTmQye4Hn6tAs3fy3V' + \
|
||||||
'gUoW7OobZNlPxAUkQCc2A6oVjCYOdpKdrMAXQp2TQQ==:'
|
'/aYa/GhW2pSrctDnAKIi4imj9joppr3CB8gqgXZOPQ==:'
|
||||||
|
|
||||||
|
|
||||||
def _testHttpsigBase(withDigest):
|
def _testHttpsigBase(withDigest):
|
||||||
|
|
Loading…
Reference in New Issue