Skip to content

Commit 3cb5dc0

Browse files
committed
Add SLIC pubkey and marker parsers
1 parent fd0faea commit 3cb5dc0

34 files changed

Lines changed: 657 additions & 425 deletions

UEFIExtract/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ SET(PROJECT_SOURCES
4141
../common/generated/edk2_ftw.cpp
4242
../common/generated/insyde_fdc.cpp
4343
../common/generated/insyde_fdm.cpp
44+
../common/generated/ms_slic_marker.cpp
45+
../common/generated/ms_slic_pubkey.cpp
4446
../common/generated/phoenix_flm.cpp
4547
../common/generated/phoenix_evsa.cpp
4648
../common/generated/intel_acbp_v1.cpp

UEFIFind/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ SET(PROJECT_SOURCES
3838
../common/generated/edk2_ftw.cpp
3939
../common/generated/insyde_fdc.cpp
4040
../common/generated/insyde_fdm.cpp
41+
../common/generated/ms_slic_marker.cpp
42+
../common/generated/ms_slic_pubkey.cpp
4143
../common/generated/phoenix_flm.cpp
4244
../common/generated/phoenix_evsa.cpp
4345
../common/generated/intel_acbp_v1.cpp

UEFITool/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ SET(PROJECT_SOURCES
7474
../common/generated/edk2_ftw.cpp
7575
../common/generated/insyde_fdc.cpp
7676
../common/generated/insyde_fdm.cpp
77+
../common/generated/ms_slic_marker.cpp
78+
../common/generated/ms_slic_pubkey.cpp
7779
../common/generated/phoenix_evsa.cpp
7880
../common/generated/phoenix_flm.cpp
7981
../common/generated/intel_acbp_v1.cpp

UEFITool/uefitool.pro

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ HEADERS += uefitool.h \
5757
../common/generated/edk2_ftw.h \
5858
../common/generated/insyde_fdc.h \
5959
../common/generated/insyde_fdm.h \
60+
../common/generated/ms_slic_marker.h \
61+
../common/generated/ms_slic_pubkey.h \
6062
../common/generated/phoenix_flm.h \
6163
../common/generated/phoenix_evsa.h \
6264
../common/generated/intel_acbp_v1.h \
@@ -132,6 +134,8 @@ SOURCES += uefitool_main.cpp \
132134
../common/generated/edk2_ftw.cpp \
133135
../common/generated/insyde_fdc.cpp \
134136
../common/generated/insyde_fdm.cpp \
137+
../common/generated/ms_slic_marker.cpp \
138+
../common/generated/ms_slic_pubkey.cpp \
135139
../common/generated/phoenix_flm.cpp \
136140
../common/generated/phoenix_evsa.cpp \
137141
../common/generated/intel_acbp_v1.cpp \

common/ffsparser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,7 @@ USTATUS FfsParser::parseRawArea(const UModelIndex & index)
992992
}
993993

994994
// Add board IDs
995-
if (parsed.revision() == 3) {
995+
if (!parsed._is_null_board_ids()) {
996996
info += usprintf("\nRegion index: %Xh\nBoardId Count: %u",
997997
parsed.board_ids()->region_index(),
998998
parsed.board_ids()->num_board_ids());

common/generated/apple_sysf.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
22

33
#include "apple_sysf.h"
4-
#include "../kaitai/exceptions.h"
54

65
apple_sysf_t::apple_sysf_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, apple_sysf_t* p__root) : kaitai::kstruct(p__io) {
76
m__parent = p__parent;
@@ -14,12 +13,6 @@ apple_sysf_t::apple_sysf_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, a
1413

1514
void apple_sysf_t::_read() {
1615
m_signature = m__io->read_u4le();
17-
{
18-
uint32_t _ = signature();
19-
if (!( ((_ == 1937339206) || (_ == 1684627783)) )) {
20-
throw kaitai::validation_expr_error<uint32_t>(signature(), _io(), std::string("/seq/0"));
21-
}
22-
}
2316
m_unknown = m__io->read_u1();
2417
m_unknown1 = m__io->read_u4le();
2518
m_sysf_size = m__io->read_u2le();

common/generated/edk2_ftw.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
22

33
#include "edk2_ftw.h"
4-
#include "../kaitai/exceptions.h"
54

65
edk2_ftw_t::edk2_ftw_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, edk2_ftw_t* p__root) : kaitai::kstruct(p__io) {
76
m__parent = p__parent;
@@ -13,12 +12,6 @@ edk2_ftw_t::edk2_ftw_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, edk2_
1312

1413
void edk2_ftw_t::_read() {
1514
m_signature = m__io->read_bytes(16);
16-
{
17-
std::string _ = signature();
18-
if (!( ((_ == std::string("\x8D\x2B\xF1\xFF\x96\x76\x8B\x4C\xA9\x85\x27\x47\x07\x5B\x4F\x50", 16)) || (_ == std::string("\x2B\x29\x58\x9E\x68\x7C\x7D\x49\x0A\xCE\x65\x00\xFD\x9F\x1B\x95", 16)) || (_ == std::string("\x2B\x29\x58\x9E\x68\x7C\x7D\x49\xA0\xCE\x65\x00\xFD\x9F\x1B\x95", 16))) )) {
19-
throw kaitai::validation_expr_error<std::string>(signature(), _io(), std::string("/seq/0"));
20-
}
21-
}
2215
m_crc = m__io->read_u4le();
2316
m_state = m__io->read_u1();
2417
m_reserved = m__io->read_bytes(3);

common/generated/edk2_vss.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@ edk2_vss_t::edk2_vss_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, edk2_
1414

1515
void edk2_vss_t::_read() {
1616
m_signature = m__io->read_u4le();
17-
{
18-
uint32_t _ = signature();
19-
if (!( ((_ == 1397970468) || (_ == 1398166308) || (_ == 1397968420)) )) {
20-
throw kaitai::validation_expr_error<uint32_t>(signature(), _io(), std::string("/seq/0"));
21-
}
22-
}
2317
m_vss_size = m__io->read_u4le();
2418
{
2519
uint32_t _ = vss_size();
@@ -28,12 +22,6 @@ void edk2_vss_t::_read() {
2822
}
2923
}
3024
m_format = m__io->read_u1();
31-
{
32-
uint8_t _ = format();
33-
if (!(_ == 90)) {
34-
throw kaitai::validation_expr_error<uint8_t>(format(), _io(), std::string("/seq/2"));
35-
}
36-
}
3725
m_state = m__io->read_u1();
3826
m_reserved = m__io->read_u2le();
3927
m_reserved1 = m__io->read_u4le();

common/generated/edk2_vss2.cpp

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -13,51 +13,15 @@ edk2_vss2_t::edk2_vss2_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, edk
1313
}
1414

1515
void edk2_vss2_t::_read() {
16-
m_signature = m__io->read_u4le();
17-
{
18-
uint32_t _ = signature();
19-
if (!( ((_ == 3721344534UL) || (_ == 3721344535UL) || (_ == 2868063352UL)) )) {
20-
throw kaitai::validation_expr_error<uint32_t>(signature(), _io(), std::string("/seq/0"));
21-
}
22-
}
23-
n_signature_auth_var_key_db = true;
24-
if (signature() == 2868063352UL) {
25-
n_signature_auth_var_key_db = false;
26-
m_signature_auth_var_key_db = m__io->read_bytes(12);
27-
if (!(signature_auth_var_key_db() == std::string("\x7B\x94\x9A\x43\xA1\x80\x2E\x14\x4E\xC3\x77\x92", 12))) {
28-
throw kaitai::validation_not_equal_error<std::string>(std::string("\x7B\x94\x9A\x43\xA1\x80\x2E\x14\x4E\xC3\x77\x92", 12), signature_auth_var_key_db(), _io(), std::string("/seq/1"));
29-
}
30-
}
31-
n_signature_vss2_store = true;
32-
if (signature() == 3721344535UL) {
33-
n_signature_vss2_store = false;
34-
m_signature_vss2_store = m__io->read_bytes(12);
35-
if (!(signature_vss2_store() == std::string("\x75\x32\x64\x41\x98\xB6\xFE\x85\x70\x7F\xFE\x7D", 12))) {
36-
throw kaitai::validation_not_equal_error<std::string>(std::string("\x75\x32\x64\x41\x98\xB6\xFE\x85\x70\x7F\xFE\x7D", 12), signature_vss2_store(), _io(), std::string("/seq/2"));
37-
}
38-
}
39-
n_signature_fdc_store = true;
40-
if (signature() == 3721344534UL) {
41-
n_signature_fdc_store = false;
42-
m_signature_fdc_store = m__io->read_bytes(12);
43-
if (!(signature_fdc_store() == std::string("\x75\x32\x64\x41\x98\xB6\xFE\x85\x70\x7F\xFE\x7D", 12))) {
44-
throw kaitai::validation_not_equal_error<std::string>(std::string("\x75\x32\x64\x41\x98\xB6\xFE\x85\x70\x7F\xFE\x7D", 12), signature_fdc_store(), _io(), std::string("/seq/3"));
45-
}
46-
}
16+
m_signature = m__io->read_bytes(16);
4717
m_vss2_size = m__io->read_u4le();
4818
{
4919
uint32_t _ = vss2_size();
5020
if (!( ((_ > static_cast<uint32_t>(len_vss2_store_header())) && (_ < 4294967295UL)) )) {
51-
throw kaitai::validation_expr_error<uint32_t>(vss2_size(), _io(), std::string("/seq/4"));
21+
throw kaitai::validation_expr_error<uint32_t>(vss2_size(), _io(), std::string("/seq/1"));
5222
}
5323
}
5424
m_format = m__io->read_u1();
55-
{
56-
uint8_t _ = format();
57-
if (!(_ == 90)) {
58-
throw kaitai::validation_expr_error<uint8_t>(format(), _io(), std::string("/seq/5"));
59-
}
60-
}
6125
m_state = m__io->read_u1();
6226
m_reserved = m__io->read_u2le();
6327
m_reserved1 = m__io->read_u4le();
@@ -71,12 +35,6 @@ edk2_vss2_t::~edk2_vss2_t() {
7135
}
7236

7337
void edk2_vss2_t::_clean_up() {
74-
if (!n_signature_auth_var_key_db) {
75-
}
76-
if (!n_signature_vss2_store) {
77-
}
78-
if (!n_signature_fdc_store) {
79-
}
8038
}
8139

8240
edk2_vss2_t::vss2_store_body_t::vss2_store_body_t(kaitai::kstream* p__io, edk2_vss2_t* p__parent, edk2_vss2_t* p__root) : kaitai::kstruct(p__io) {

common/generated/edk2_vss2.h

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -344,28 +344,7 @@ class edk2_vss2_t : public kaitai::kstruct {
344344
int32_t len_vss2_store_header();
345345

346346
private:
347-
uint32_t m_signature;
348-
std::string m_signature_auth_var_key_db;
349-
bool n_signature_auth_var_key_db;
350-
351-
public:
352-
bool _is_null_signature_auth_var_key_db() { signature_auth_var_key_db(); return n_signature_auth_var_key_db; };
353-
354-
private:
355-
std::string m_signature_vss2_store;
356-
bool n_signature_vss2_store;
357-
358-
public:
359-
bool _is_null_signature_vss2_store() { signature_vss2_store(); return n_signature_vss2_store; };
360-
361-
private:
362-
std::string m_signature_fdc_store;
363-
bool n_signature_fdc_store;
364-
365-
public:
366-
bool _is_null_signature_fdc_store() { signature_fdc_store(); return n_signature_fdc_store; };
367-
368-
private:
347+
std::string m_signature;
369348
uint32_t m_vss2_size;
370349
uint8_t m_format;
371350
uint8_t m_state;
@@ -378,10 +357,7 @@ class edk2_vss2_t : public kaitai::kstruct {
378357
std::unique_ptr<kaitai::kstream> m__io__raw_body;
379358

380359
public:
381-
uint32_t signature() const { return m_signature; }
382-
std::string signature_auth_var_key_db() const { return m_signature_auth_var_key_db; }
383-
std::string signature_vss2_store() const { return m_signature_vss2_store; }
384-
std::string signature_fdc_store() const { return m_signature_fdc_store; }
360+
std::string signature() const { return m_signature; }
385361
uint32_t vss2_size() const { return m_vss2_size; }
386362
uint8_t format() const { return m_format; }
387363
uint8_t state() const { return m_state; }

0 commit comments

Comments
 (0)