From 9003bbf2d379d446bf1c08ebd11a4c591be097ed Mon Sep 17 00:00:00 2001 From: Lianhao Lu Date: Thu, 21 Nov 2019 12:56:51 +0800 Subject: Correct hash algorithm name in the manifest file Change-Id: I3817a296ec4480a18ee39f95f283062fa79d0cbf Issue-ID: VNFSDK-518 Signed-off-by: Lianhao Lu --- tests/packager/test_csar.py | 6 +++--- tests/packager/test_manifest.py | 10 +++++----- vnfsdk_pkgtools/cli/__main__.py | 3 ++- vnfsdk_pkgtools/packager/manifest.py | 2 +- vnfsdk_pkgtools/packager/utils.py | 4 ++++ 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/tests/packager/test_csar.py b/tests/packager/test_csar.py index 8217146..10d2a7d 100644 --- a/tests/packager/test_csar.py +++ b/tests/packager/test_csar.py @@ -54,7 +54,7 @@ ARGS_MANIFEST_DIGEST = { 'history': 'ChangeLog.txt', 'tests': 'Tests', 'licenses': 'Licenses', - 'digest': 'sha256', + 'digest': 'sha-256', 'certificate': None, 'privkey': None, } @@ -66,7 +66,7 @@ ARGS_MANIFEST_DIGEST_CERT = { 'history': 'ChangeLog.txt', 'tests': 'Tests', 'licenses': 'Licenses', - 'digest': 'sha256', + 'digest': 'sha-256', 'certificate': 'test.crt', 'privkey': os.path.join(ROOT_DIR, 'tests', 'resources', 'signature', 'test.key') } @@ -90,7 +90,7 @@ INVALID_ARGS_NO_MANIFEST = { 'history': None, 'tests': None, 'licenses': None, - 'digest': 'sha256', + 'digest': 'sha-256', 'certificate': None, 'privkey': None, } diff --git a/tests/packager/test_manifest.py b/tests/packager/test_manifest.py index 003e23e..e8e1e17 100644 --- a/tests/packager/test_manifest.py +++ b/tests/packager/test_manifest.py @@ -37,7 +37,7 @@ METADATA_MISSING = "vnf_product_name: test" FILE_CONTENT = "needToBeHashed" FILE_DIGEST = '\n'.join(['Source: digest', - 'Algorithm: SHA256', + 'Algorithm: SHA-256', 'Hash: 20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c', ]) @@ -95,7 +95,7 @@ def test_digest(tmpdir): digest.write(FILE_CONTENT) m = manifest.Manifest(mf.dirname, 'test.mf') - assert m.digests['digest'][0] == "SHA256" + assert m.digests['digest'][0] == "SHA-256" assert m.digests['digest'][1] == "20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c" def test_add_file(tmpdir): @@ -106,8 +106,8 @@ def test_add_file(tmpdir): digest.write(FILE_CONTENT) m = manifest.Manifest(mf.dirname, 'test.mf') - m.add_file('digest', 'SHA256') - assert m.digests['digest'][0] == "SHA256" + m.add_file('digest', 'SHA-256') + assert m.digests['digest'][0] == "SHA-256" assert m.digests['digest'][1] == "20a480339aa4371099f9503511dcc5a8051ce3884846678ced5611ec64bbfc9c" def test_update_to_file(tmpdir): @@ -120,7 +120,7 @@ def test_update_to_file(tmpdir): digest2.write(FILE_CONTENT) m1 = manifest.Manifest(mf.dirname, 'test.mf') - m1.add_file('digest2', 'SHA256') + m1.add_file('digest2', 'SHA-256') m1.signature = CMS m1.update_to_file() m2 = manifest.Manifest(mf.dirname, 'test.mf') diff --git a/vnfsdk_pkgtools/cli/__main__.py b/vnfsdk_pkgtools/cli/__main__.py index 09896e0..175fcb2 100644 --- a/vnfsdk_pkgtools/cli/__main__.py +++ b/vnfsdk_pkgtools/cli/__main__.py @@ -24,6 +24,7 @@ import tempfile import pkg_resources from vnfsdk_pkgtools.packager import csar +from vnfsdk_pkgtools.packager import manifest from vnfsdk_pkgtools import validator from vnfsdk_pkgtools import vnfreq @@ -99,7 +100,7 @@ def parse_args(args_list): help='Directory containing license information, relative to service template directory') csar_create.add_argument( '--digest', - choices=['SHA256', 'SHA512'], + choices=manifest.SUPPORTED_HASH_ALGO, help='If present, means to check the file deigest in manifest; compute the digest using the specified hash algorithm of all files in the csar package to be put into the manifest file') csar_create.add_argument( '--certificate', diff --git a/vnfsdk_pkgtools/packager/manifest.py b/vnfsdk_pkgtools/packager/manifest.py index 81ac53c..b2d0804 100644 --- a/vnfsdk_pkgtools/packager/manifest.py +++ b/vnfsdk_pkgtools/packager/manifest.py @@ -27,7 +27,7 @@ METADATA_KEYS = [ 'vnf_provider_id', 'vnf_release_data_time', 'vnf_package_version'] DIGEST_KEYS = [ 'Source', 'Algorithm', 'Hash' ] -SUPPORTED_HASH_ALGO = ['SHA256', 'SHA512'] +SUPPORTED_HASH_ALGO = ['SHA-256', 'SHA-512'] class ManifestException(Exception): pass diff --git a/vnfsdk_pkgtools/packager/utils.py b/vnfsdk_pkgtools/packager/utils.py index 405a65e..06143c6 100644 --- a/vnfsdk_pkgtools/packager/utils.py +++ b/vnfsdk_pkgtools/packager/utils.py @@ -40,6 +40,10 @@ def _hash_value_for_file(f, hash_function, block_size=2**20): def cal_file_hash(root, path, algo): + if algo == 'SHA-256': + algo = 'SHA256' + elif algo == 'SHA-512': + algo = 'SHA512' h = hashlib.new(algo) if urlparse.urlparse(path).scheme: r = requests.get(path) -- cgit 1.2.3-korg