Correct hash algorithm name in the manifest file 95/98695/1
authorLianhao Lu <lianhao.lu@intel.com>
Thu, 21 Nov 2019 04:56:51 +0000 (12:56 +0800)
committerLianhao Lu <lianhao.lu@intel.com>
Thu, 21 Nov 2019 04:58:52 +0000 (12:58 +0800)
Change-Id: I3817a296ec4480a18ee39f95f283062fa79d0cbf
Issue-ID: VNFSDK-518
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
tests/packager/test_csar.py
tests/packager/test_manifest.py
vnfsdk_pkgtools/cli/__main__.py
vnfsdk_pkgtools/packager/manifest.py
vnfsdk_pkgtools/packager/utils.py

index 8217146..10d2a7d 100644 (file)
@@ -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,
         }
index 003e23e..e8e1e17 100644 (file)
@@ -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')
index 09896e0..175fcb2 100644 (file)
@@ -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',
index 81ac53c..b2d0804 100644 (file)
@@ -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
index 405a65e..06143c6 100644 (file)
@@ -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)