imgtool: prefer cbor2 over cbor

The cbor module is unmaintained, with the last release in 2016[1]. The
cbor2 module however is under active development and was last released
just last month[2].

As the APIs are identical, we can import cbor2 and if that fails fall
back to cbor.

[1] https://pypi.org/project/cbor/#history
[2] https://pypi.org/project/cbor2/#history

Closes #1189

Signed-off-by: Ross Burton <ross.burton@arm.com>
Change-Id: Iaf2d0df625a200a5cebf72dec4a89877a26194ea
diff --git a/scripts/imgtool.nix b/scripts/imgtool.nix
index 9ac41bc..ea9ba8b 100644
--- a/scripts/imgtool.nix
+++ b/scripts/imgtool.nix
@@ -20,7 +20,7 @@
       python37.pkgs.cryptography
       python37.pkgs.intelhex
       python37.pkgs.setuptools
-      python37.pkgs.cbor
+      python37.pkgs.cbor2
     ]
   );
 in
diff --git a/scripts/imgtool/boot_record.py b/scripts/imgtool/boot_record.py
index ac433aa..8ab2f60 100644
--- a/scripts/imgtool/boot_record.py
+++ b/scripts/imgtool/boot_record.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2019, Arm Limited.
+# Copyright (c) 2019-2021, Arm Limited.
 # Copyright (c) 2020, Linaro Limited
 #
 # SPDX-License-Identifier: Apache-2.0
@@ -16,8 +16,11 @@
 # limitations under the License.
 
 from enum import Enum
-import cbor
 
+try:
+    from cbor2 import dumps
+except ImportError:
+    from cbor import dumps
 
 class SwComponent(int, Enum):
     """
@@ -46,4 +49,4 @@
     #       list because later it will be modified by the bootloader.
     properties[SwComponent.MEASUREMENT_VALUE] = sw_measurement_value
 
-    return cbor.dumps(properties)
+    return dumps(properties)
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
index 9481e2c..2446928 100644
--- a/scripts/requirements.txt
+++ b/scripts/requirements.txt
@@ -1,4 +1,4 @@
 cryptography>=2.6
 intelhex
 click
-cbor>=1.0.0
+cbor2
diff --git a/scripts/setup.py b/scripts/setup.py
index a228ea3..692cfb7 100644
--- a/scripts/setup.py
+++ b/scripts/setup.py
@@ -17,7 +17,7 @@
         'cryptography>=2.4.2',
         'intelhex>=2.2.1',
         'click',
-        'cbor>=1.0.0',
+        'cbor2',
     ],
     entry_points={
         "console_scripts": ["imgtool=imgtool.main:imgtool"]