update digest_test
replace sec_oid_tag_str() with oid_str() due to API cleanup data_to_hex() API changed to use default separator, explicitly set it to None change string quotes from double to single for consistency git-svn-id: svn://10.0.0.236/trunk@260389 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -9,33 +9,33 @@ import nss.nss as nss
|
||||
verbose = False
|
||||
|
||||
tests = [
|
||||
{"name" : "md5",
|
||||
"ref_cmd" : "md5sum",
|
||||
"nss_digest_func" : nss.md5_digest,
|
||||
"hash_oid" : nss.SEC_OID_MD5},
|
||||
{"name" : "sha1",
|
||||
"ref_cmd" : "sha1sum",
|
||||
"nss_digest_func" : nss.sha1_digest,
|
||||
"hash_oid" : nss.SEC_OID_SHA1},
|
||||
{"name" : "sha256",
|
||||
"ref_cmd" : "sha256sum",
|
||||
"nss_digest_func" : nss.sha256_digest,
|
||||
"hash_oid" : nss.SEC_OID_SHA256},
|
||||
{"name" : "sha512",
|
||||
"ref_cmd" : "sha512sum",
|
||||
"nss_digest_func" : nss.sha512_digest,
|
||||
"hash_oid" : nss.SEC_OID_SHA512},
|
||||
{'name' : 'md5',
|
||||
'ref_cmd' : 'md5sum',
|
||||
'nss_digest_func' : nss.md5_digest,
|
||||
'hash_oid' : nss.SEC_OID_MD5},
|
||||
{'name' : 'sha1',
|
||||
'ref_cmd' : 'sha1sum',
|
||||
'nss_digest_func' : nss.sha1_digest,
|
||||
'hash_oid' : nss.SEC_OID_SHA1},
|
||||
{'name' : 'sha256',
|
||||
'ref_cmd' : 'sha256sum',
|
||||
'nss_digest_func' : nss.sha256_digest,
|
||||
'hash_oid' : nss.SEC_OID_SHA256},
|
||||
{'name' : 'sha512',
|
||||
'ref_cmd' : 'sha512sum',
|
||||
'nss_digest_func' : nss.sha512_digest,
|
||||
'hash_oid' : nss.SEC_OID_SHA512},
|
||||
]
|
||||
|
||||
|
||||
def do_test(name, ref_cmd, nss_digest_func, hash_oid, in_filename, chunk_size):
|
||||
result = 0
|
||||
|
||||
hash_oid_name = nss.sec_oid_tag_str(hash_oid)
|
||||
hash_oid_name = nss.oid_str(hash_oid)
|
||||
|
||||
if verbose:
|
||||
print "running test %s: nss_digest_func=%s hash_oid=%s" % \
|
||||
(name, nss_digest_func.__name__, hash_oid_name)
|
||||
print 'running test %s: nss_digest_func=%s hash_oid=%s in_filename=%s' % \
|
||||
(name, nss_digest_func.__name__, hash_oid_name, in_filename)
|
||||
|
||||
# read the data in from the file
|
||||
ref_data = open(in_filename).read()
|
||||
@@ -52,45 +52,45 @@ def do_test(name, ref_cmd, nss_digest_func, hash_oid, in_filename, chunk_size):
|
||||
status = proc.wait();
|
||||
reference_digest = proc.stdout.read().split()[0]
|
||||
if verbose:
|
||||
print "reference_digest\n%s" % (reference_digest)
|
||||
print 'reference_digest\n%s' % (reference_digest)
|
||||
|
||||
# Run the test with convenience digest function (e.g. nss.sha256_digest, etc.).
|
||||
test_digest = nss.data_to_hex(nss_digest_func(ref_data))
|
||||
if verbose: print "nss %s\n%s" % (nss_digest_func.__name__, test_digest)
|
||||
test_digest = nss.data_to_hex(nss_digest_func(ref_data), separator=None)
|
||||
if verbose: print 'nss %s\n%s' % (nss_digest_func.__name__, test_digest)
|
||||
|
||||
if test_digest != reference_digest:
|
||||
result += 1
|
||||
print "nss %s test failed" % (nss_digest_func.__name__)
|
||||
print "reference = %s" % (reference_digest)
|
||||
print "test = %s" % (test_digest)
|
||||
print 'nss %s test failed' % (nss_digest_func.__name__)
|
||||
print 'reference = %s' % (reference_digest)
|
||||
print 'test = %s' % (test_digest)
|
||||
|
||||
# Run the test using the generic hash_buf function specifying the hash algorithm.
|
||||
test_digest = nss.data_to_hex(nss.hash_buf(hash_oid, ref_data))
|
||||
if verbose: print "nss.hash_buf %s\n%s" % (hash_oid_name, test_digest)
|
||||
test_digest = nss.data_to_hex(nss.hash_buf(hash_oid, ref_data), separator=None)
|
||||
if verbose: print 'nss.hash_buf %s\n%s' % (hash_oid_name, test_digest)
|
||||
|
||||
if test_digest != reference_digest:
|
||||
result += 1
|
||||
print "nss.hash_buf %s test failed" % (hash_oid_name)
|
||||
print "reference = %s" % (reference_digest)
|
||||
print "test = %s" % (test_digest)
|
||||
print 'nss.hash_buf %s test failed' % (hash_oid_name)
|
||||
print 'reference = %s' % (reference_digest)
|
||||
print 'test = %s' % (test_digest)
|
||||
|
||||
# Run the test using the lowest level hashing functions by specifying the hash algorithm.
|
||||
# The entire input data is supplied all at once in a single call.
|
||||
context = nss.create_digest_context(hash_oid)
|
||||
context.digest_begin()
|
||||
context.digest_op(ref_data)
|
||||
test_digest = nss.data_to_hex(context.digest_final())
|
||||
if verbose: print "nss.digest_context %s\n%s" % (hash_oid_name, test_digest)
|
||||
test_digest = nss.data_to_hex(context.digest_final(), separator=None)
|
||||
if verbose: print 'nss.digest_context %s\n%s' % (hash_oid_name, test_digest)
|
||||
|
||||
if test_digest != reference_digest:
|
||||
result += 1
|
||||
print "nss.digest_context %s test failed" % (hash_oid_name)
|
||||
print "reference = %s" % (reference_digest)
|
||||
print "test = %s" % (test_digest)
|
||||
print 'nss.digest_context %s test failed' % (hash_oid_name)
|
||||
print 'reference = %s' % (reference_digest)
|
||||
print 'test = %s' % (test_digest)
|
||||
|
||||
# Run the test using the lowest level hashing functions by specifying the hash algorithm
|
||||
# and feeding "chunks" of data one at a time to be consumed.
|
||||
in_file = open(in_filename, "r")
|
||||
# and feeding 'chunks' of data one at a time to be consumed.
|
||||
in_file = open(in_filename, 'r')
|
||||
context = nss.create_digest_context(hash_oid)
|
||||
context.digest_begin()
|
||||
while True:
|
||||
@@ -99,71 +99,66 @@ def do_test(name, ref_cmd, nss_digest_func, hash_oid, in_filename, chunk_size):
|
||||
break
|
||||
context.digest_op(in_data)
|
||||
|
||||
test_digest = nss.data_to_hex(context.digest_final())
|
||||
if verbose: print "chunked nss.digest_context %s\n%s" % (hash_oid_name, test_digest)
|
||||
test_digest = nss.data_to_hex(context.digest_final(), separator=None)
|
||||
if verbose: print 'chunked nss.digest_context %s\n%s' % (hash_oid_name, test_digest)
|
||||
|
||||
if test_digest != reference_digest:
|
||||
result += 1
|
||||
print "chunked nss.digest_context %s test failed" % (hash_oid_name)
|
||||
print "reference = %s" % (reference_digest)
|
||||
print "test = %s" % (test_digest)
|
||||
print 'chunked nss.digest_context %s test failed' % (hash_oid_name)
|
||||
print 'reference = %s' % (reference_digest)
|
||||
print 'test = %s' % (test_digest)
|
||||
|
||||
return result
|
||||
|
||||
def usage():
|
||||
print '''\
|
||||
digest_test [-v -h] filename
|
||||
filename file to be used as test data
|
||||
-v --verbose turn on verbose output
|
||||
-h --help print usage
|
||||
-s --size number of octets processed in one iteration
|
||||
-v --verbose turn on verbose output
|
||||
-h --help print usage
|
||||
-s --size number of octets processed in one iteration
|
||||
-i --infile filename file to be used as test data
|
||||
'''
|
||||
|
||||
def main():
|
||||
global verbose
|
||||
in_filename=''
|
||||
in_filename = sys.argv[0]
|
||||
chunk_size = 128
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "hvs:",
|
||||
["help", "verbose", "size="])
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'hvs:i:',
|
||||
['help', 'verbose', 'size=', 'infile='])
|
||||
except getopt.GetoptError, err:
|
||||
print str(err) # will print something like "option -a not recognized"
|
||||
print str(err) # will print something like 'option -a not recognized'
|
||||
usage()
|
||||
sys.exit(2)
|
||||
verbose = False
|
||||
for o, a in opts:
|
||||
if o in ("-s", "--size"):
|
||||
if o in ('-s', '--size'):
|
||||
chunk_size = int(a)
|
||||
elif o in ("-v", "--verbose"):
|
||||
elif o in ('-i', '--infile'):
|
||||
in_filename = a
|
||||
elif o in ('-v', '--verbose'):
|
||||
verbose = True
|
||||
elif o in ("-h", "--help"):
|
||||
elif o in ('-h', '--help'):
|
||||
usage()
|
||||
sys.exit(0)
|
||||
else:
|
||||
assert False, "unhandled option"
|
||||
|
||||
if (len(args) != 1):
|
||||
print "expected single file name"
|
||||
usage()
|
||||
sys.exit(2)
|
||||
|
||||
in_filename = args[0]
|
||||
assert False, 'unhandled option'
|
||||
|
||||
nss.nss_init_nodb()
|
||||
|
||||
result = 0
|
||||
for test in tests:
|
||||
result += do_test(test["name"], test["ref_cmd"], test["nss_digest_func"],
|
||||
test["hash_oid"], in_filename, chunk_size)
|
||||
result += do_test(test['name'], test['ref_cmd'], test['nss_digest_func'],
|
||||
test['hash_oid'], in_filename, chunk_size)
|
||||
|
||||
if result == 0:
|
||||
print "SUCCESS"
|
||||
print 'SUCCESS'
|
||||
else:
|
||||
print "FAILED %d tests" % (result)
|
||||
print 'FAILED %d tests' % (result)
|
||||
|
||||
sys.exit(result)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user