binman: Tidy up tests for pre-load entry type
authorSimon Glass <sjg@chromium.org>
Mon, 24 Jul 2023 15:19:57 +0000 (09:19 -0600)
committerSimon Glass <sjg@chromium.org>
Mon, 24 Jul 2023 15:33:55 +0000 (09:33 -0600)
Drop the use of a numbered key file since numbering is just for the test
devicetree files. Also adjust the tests to avoid putting a hard-coded
path to binman in the file, using the entry arg instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/binman/etype/pre_load.py
tools/binman/ftest.py
tools/binman/test/230_pre_load.dts
tools/binman/test/231_pre_load_pkcs.dts
tools/binman/test/232_pre_load_pss.dts
tools/binman/test/233_pre_load_invalid_padding.dts
tools/binman/test/234_pre_load_invalid_sha.dts
tools/binman/test/235_pre_load_invalid_algo.dts
tools/binman/test/236_pre_load_invalid_key.dts
tools/binman/test/dev.key [moved from tools/binman/test/230_dev.key with 100% similarity]

index bd3545b..2e4c723 100644 (file)
@@ -81,7 +81,8 @@ class Entry_pre_load(Entry_collection):
 
     def ReadNode(self):
         super().ReadNode()
-        self.key_path, = self.GetEntryArgsOrProps([EntryArg('pre-load-key-path', str)])
+        self.key_path, = self.GetEntryArgsOrProps(
+            [EntryArg('pre-load-key-path', str)])
         if self.key_path is None:
             self.key_path = ''
 
@@ -98,8 +99,7 @@ class Entry_pre_load(Entry_collection):
             self.Raise(sign_name + " is not supported")
 
         # Read the key
-        with open(key_name, 'rb') as pem:
-            key = RSA.import_key(pem.read())
+        key = RSA.import_key(tools.read_file(key_name))
 
         # Check if the key has the expected size
         if key.size_in_bytes() != RSAS[sign_name]:
index 3e8091e..376af9f 100644 (file)
@@ -5647,41 +5647,61 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap
     def testPreLoad(self):
         """Test an image with a pre-load header"""
         entry_args = {
-            'pre-load-key-path': '.',
+            'pre-load-key-path': os.path.join(self._binman_dir, 'test'),
         }
-        data, _, _, _ = self._DoReadFileDtb('230_pre_load.dts',
-                                            entry_args=entry_args)
-        self.assertEqual(PRE_LOAD_MAGIC, data[:len(PRE_LOAD_MAGIC)])
-        self.assertEqual(PRE_LOAD_VERSION, data[4:4 + len(PRE_LOAD_VERSION)])
-        self.assertEqual(PRE_LOAD_HDR_SIZE, data[8:8 + len(PRE_LOAD_HDR_SIZE)])
-        data = self._DoReadFile('230_pre_load.dts')
+        data = self._DoReadFileDtb(
+            '230_pre_load.dts', entry_args=entry_args,
+            extra_indirs=[os.path.join(self._binman_dir, 'test')])[0]
         self.assertEqual(PRE_LOAD_MAGIC, data[:len(PRE_LOAD_MAGIC)])
         self.assertEqual(PRE_LOAD_VERSION, data[4:4 + len(PRE_LOAD_VERSION)])
         self.assertEqual(PRE_LOAD_HDR_SIZE, data[8:8 + len(PRE_LOAD_HDR_SIZE)])
 
+    def testPreLoadNoKey(self):
+        """Test an image with a pre-load heade0r with missing key"""
+        with self.assertRaises(FileNotFoundError) as exc:
+            self._DoReadFile('230_pre_load.dts')
+        self.assertIn("No such file or directory: 'dev.key'",
+                      str(exc.exception))
+
     def testPreLoadPkcs(self):
         """Test an image with a pre-load header with padding pkcs"""
-        data = self._DoReadFile('231_pre_load_pkcs.dts')
+        entry_args = {
+            'pre-load-key-path': os.path.join(self._binman_dir, 'test'),
+        }
+        data = self._DoReadFileDtb('231_pre_load_pkcs.dts',
+                                   entry_args=entry_args)[0]
         self.assertEqual(PRE_LOAD_MAGIC, data[:len(PRE_LOAD_MAGIC)])
         self.assertEqual(PRE_LOAD_VERSION, data[4:4 + len(PRE_LOAD_VERSION)])
         self.assertEqual(PRE_LOAD_HDR_SIZE, data[8:8 + len(PRE_LOAD_HDR_SIZE)])
 
     def testPreLoadPss(self):
         """Test an image with a pre-load header with padding pss"""
-        data = self._DoReadFile('232_pre_load_pss.dts')
+        entry_args = {
+            'pre-load-key-path': os.path.join(self._binman_dir, 'test'),
+        }
+        data = self._DoReadFileDtb('232_pre_load_pss.dts',
+                                   entry_args=entry_args)[0]
         self.assertEqual(PRE_LOAD_MAGIC, data[:len(PRE_LOAD_MAGIC)])
         self.assertEqual(PRE_LOAD_VERSION, data[4:4 + len(PRE_LOAD_VERSION)])
         self.assertEqual(PRE_LOAD_HDR_SIZE, data[8:8 + len(PRE_LOAD_HDR_SIZE)])
 
     def testPreLoadInvalidPadding(self):
         """Test an image with a pre-load header with an invalid padding"""
+        entry_args = {
+            'pre-load-key-path': os.path.join(self._binman_dir, 'test'),
+        }
         with self.assertRaises(ValueError) as e:
-            data = self._DoReadFile('233_pre_load_invalid_padding.dts')
+            self._DoReadFileDtb('233_pre_load_invalid_padding.dts',
+                                entry_args=entry_args)
 
     def testPreLoadInvalidSha(self):
         """Test an image with a pre-load header with an invalid hash"""
+        entry_args = {
+            'pre-load-key-path': os.path.join(self._binman_dir, 'test'),
+        }
         with self.assertRaises(ValueError) as e:
-            data = self._DoReadFile('234_pre_load_invalid_sha.dts')
+            self._DoReadFileDtb('234_pre_load_invalid_sha.dts',
+                                entry_args=entry_args)
 
     def testPreLoadInvalidAlgo(self):
         """Test an image with a pre-load header with an invalid algo"""
@@ -5690,8 +5710,12 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap
 
     def testPreLoadInvalidKey(self):
         """Test an image with a pre-load header with an invalid key"""
+        entry_args = {
+            'pre-load-key-path': os.path.join(self._binman_dir, 'test'),
+        }
         with self.assertRaises(ValueError) as e:
-            data = self._DoReadFile('236_pre_load_invalid_key.dts')
+            data = self._DoReadFileDtb('236_pre_load_invalid_key.dts',
+                                       entry_args=entry_args)
 
     def _CheckSafeUniqueNames(self, *images):
         """Check all entries of given images for unsafe unique names"""
index c0c2472..e6d9ef4 100644 (file)
@@ -10,7 +10,7 @@
                pre-load {
                        content = <&image>;
                         algo-name = "sha256,rsa2048";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <0x11223344>;
                };
index 530638c..66268cd 100644 (file)
@@ -11,7 +11,7 @@
                        content = <&image>;
                         algo-name = "sha256,rsa2048";
                         padding-name = "pkcs-1.5";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <0x11223344>;
                };
index 371e0fd..3008d3f 100644 (file)
@@ -11,7 +11,7 @@
                        content = <&image>;
                         algo-name = "sha256,rsa2048";
                         padding-name = "pss";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <0x11223344>;
                };
index 9cb4cb5..bbe2d1b 100644 (file)
@@ -11,7 +11,7 @@
                        content = <&image>;
                         algo-name = "sha256,rsa2048";
                         padding-name = "padding";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <1>;
                };
index 8ded98d..29afd2e 100644 (file)
@@ -11,7 +11,7 @@
                        content = <&image>;
                         algo-name = "sha2560,rsa2048";
                         padding-name = "pkcs-1.5";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <1>;
                };
index 145286c..d6f6dd2 100644 (file)
@@ -11,7 +11,7 @@
                        content = <&image>;
                         algo-name = "sha256,rsa20480";
                         padding-name = "pkcs-1.5";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <1>;
                };
index df858c3..f93bc97 100644 (file)
@@ -11,7 +11,7 @@
                        content = <&image>;
                         algo-name = "sha256,rsa4096";
                         padding-name = "pkcs-1.5";
-                        key-name = "tools/binman/test/230_dev.key";
+                        key-name = "dev.key";
                         header-size = <4096>;
                         version = <1>;
                };