prototype functional
This commit is contained in:
commit
013377b414
12 files changed
+2030
No files matched your search
@@ -0,0 +1,83 @@
|
||||
#! /usr/bin/env python
|
||||
'''
|
||||
jsSHA HMAC Test Result Generator
|
||||
Version 1.0 Copyright Brian Turek 2009
|
||||
Distributed under the BSD License
|
||||
See http://jssha.sourceforge.net/ for more information
|
||||
'''
|
||||
import hashlib
|
||||
import hmac
|
||||
|
||||
def main():
|
||||
'''
|
||||
main()
|
||||
|
||||
Calculates the HMAC of the test vectors given in FIPS-198a for full
|
||||
length HMACs. Uses double the key sizes for SHA-384 and SHA-512 as
|
||||
they have double the block size
|
||||
'''
|
||||
# shortKey tests for handling of key lengths less than the block size
|
||||
shortTxt = b'Sample #2'
|
||||
shortKey = bytes.fromhex('30313233 34353637 38393a3b 3c3d3e3f 40414243')
|
||||
|
||||
# medKey tests for handling of keys lengths equal to the block size
|
||||
medTxt = b'Sample #1'
|
||||
medKey = bytes.fromhex('00010203 04050607 08090a0b 0c0d0e0f 10111213' +
|
||||
'14151617 18191a1b 1c1d1e1f 20212223 24252627 28292a2b 2c2d2e2f'+
|
||||
'30313233 34353637 38393a3b 3c3d3e3f')
|
||||
|
||||
# largeKey tests for handling of keys lengths greater than the block size
|
||||
largeTxt = b'Sample #3'
|
||||
largeKey = bytes.fromhex('50515253 54555657 58595a5b 5c5d5e5f 60616263'+
|
||||
'64656667 68696a6b 6c6d6e6f 70717273 74757677 78797a7b 7c7d7e7f' +
|
||||
'80818283 84858687 88898a8b 8c8d8e8f 90919293 94959697 98999a9b' +
|
||||
'9c9d9e9f a0a1a2a3 a4a5a6a7 a8a9aaab acadaeaf b0b1b2b3')
|
||||
|
||||
# Perform the SHA-1 Tests
|
||||
print('\nSHA-1 Short Key Result:')
|
||||
print(hmac.new(shortKey, shortTxt, hashlib.sha1).hexdigest())
|
||||
print('\nSHA-1 Medium Key Result:')
|
||||
print(hmac.new(medKey, medTxt, hashlib.sha1).hexdigest())
|
||||
print('\nSHA-1 Large Key Result:')
|
||||
print(hmac.new(largeKey, largeTxt, hashlib.sha1).hexdigest())
|
||||
|
||||
# Perform the SHA-224 Tests
|
||||
print('\nSHA-224 Short Key Result:')
|
||||
print(hmac.new(shortKey, shortTxt, hashlib.sha224).hexdigest())
|
||||
print('\nSHA-224 Medium Key Result:')
|
||||
print(hmac.new(medKey, medTxt, hashlib.sha224).hexdigest())
|
||||
print('\nSHA-224 Large Key Result:')
|
||||
print(hmac.new(largeKey, largeTxt, hashlib.sha224).hexdigest())
|
||||
|
||||
# Perform the SHA-256 Tests
|
||||
print('\nSHA-256 Short Key Result:')
|
||||
print(hmac.new(shortKey, shortTxt, hashlib.sha256).hexdigest())
|
||||
print('\nSHA-256 Medium Key Result:')
|
||||
print(hmac.new(medKey, medTxt, hashlib.sha256).hexdigest())
|
||||
print('\nSHA-256 Large Key Result:')
|
||||
print(hmac.new(largeKey, largeTxt, hashlib.sha256).hexdigest())
|
||||
|
||||
# Since SHA-384 and SHA-512 take double the block size, double the key
|
||||
# length so the tests act against the same functions as above
|
||||
shortKey = shortKey * 2
|
||||
medKey = medKey * 2
|
||||
largeKey = largeKey * 2
|
||||
|
||||
# Perform the SHA-384 Tests
|
||||
print('\nSHA-384 Short Key Result:')
|
||||
print(hmac.new(shortKey, shortTxt, hashlib.sha384).hexdigest())
|
||||
print('\nSHA-384 Medium Key Result:')
|
||||
print(hmac.new(medKey, medTxt, hashlib.sha384).hexdigest())
|
||||
print('\nSHA-384 Large Key Result:')
|
||||
print(hmac.new(largeKey, largeTxt, hashlib.sha384).hexdigest())
|
||||
|
||||
# Perform the SHA-512 Tests
|
||||
print('\nSHA-512 Short Key Result:')
|
||||
print(hmac.new(shortKey, shortTxt, hashlib.sha512).hexdigest())
|
||||
print('\nSHA-512 Medium Key Result:')
|
||||
print(hmac.new(medKey, medTxt, hashlib.sha512).hexdigest())
|
||||
print('\nSHA-512 Large Key Result:')
|
||||
print(hmac.new(largeKey, largeTxt, hashlib.sha512).hexdigest())
|
||||
|
||||
if ('__main__' == __name__):
|
||||
main()
|
||||
Reference in new issue
Block a user