binman: Tidy up tests for pre-load entry type

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>
This commit is contained in:
Simon Glass 2023-07-24 09:19:57 -06:00
parent be71a05a41
commit efda8ab201
10 changed files with 46 additions and 22 deletions

View 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]:

View 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"""

View 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>;
};

View 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>;
};

View 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>;
};

View 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>;
};

View 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>;
};

View 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>;
};

View 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>;
};