Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""Script to generate MC tests for Closure SHA functions"""
|
||||
|
||||
from binascii import hexlify
|
||||
from hashlib import sha1, sha224, sha256, sha384, sha512
|
||||
|
||||
from Crypto.Cipher import AES
|
||||
|
||||
C = AES.new('Closure Library SHA KATs ')
|
||||
MC_START = ''.join(C.encrypt(('MC' * 15) + '\x00' + chr(i)) for i in range(16))
|
||||
|
||||
|
||||
TEST_TEMPLATE = '''\
|
||||
function test{shatitle}() {{
|
||||
var sha = new goog.crypt.{shatitle}();
|
||||
var initial_state = '{initial_state}';
|
||||
var count = {count};
|
||||
var state = goog.crypt.stringToByteArray(initial_state);
|
||||
var digest;
|
||||
for (var i = 0; i < count; i++) {{
|
||||
sha.reset();
|
||||
sha.update(state);
|
||||
digest = sha.digest();
|
||||
state = goog.array.concat(digest, state);
|
||||
}}
|
||||
assertEquals({lenfinal}, state.length);
|
||||
assertEquals('{expected}',
|
||||
goog.crypt.byteArrayToHex(digest));
|
||||
sha.reset();
|
||||
for (var i = 0; i < ({lenfinal} + 10); i++) {{
|
||||
sha.update(state, i);
|
||||
}}
|
||||
assertEquals('{expected2}',
|
||||
goog.crypt.byteArrayToHex(sha.digest()));
|
||||
}}
|
||||
'''
|
||||
|
||||
def genmc(sha, name, blocklen, digestlen):
|
||||
"""Generate a Monte Carlo test for each SHA instance."""
|
||||
count = (2 ** 15) // digestlen
|
||||
state = name
|
||||
for i in range(count):
|
||||
digest = sha(state).digest()
|
||||
state = digest + state
|
||||
final_state = state
|
||||
lenfinal = len(final_state)
|
||||
h = sha()
|
||||
for i in range(len(final_state) + 10):
|
||||
h.update(final_state[:i])
|
||||
print(TEST_TEMPLATE.format(initial_state=name, count=count,
|
||||
lenfinal=len(final_state),
|
||||
expected=hexlify(digest),
|
||||
shatitle=name,
|
||||
expected2=hexlify(h.digest())))
|
||||
|
||||
|
||||
SHAS = [(sha1, 'Sha1', 64, 160//8),
|
||||
(sha224, 'Sha224', 64, 224//8),
|
||||
(sha256, 'Sha256', 64, 256//8),
|
||||
(sha384, 'Sha384', 128, 384//8),
|
||||
(sha512, 'Sha512', 128, 512//8)]
|
||||
|
||||
for s in SHAS:
|
||||
genmc(*s)
|
||||
Reference in New Issue
Block a user