diff --git a/AppleModels/update_generated.py b/AppleModels/update_generated.py index 6b935595..d00f4ea7 100755 --- a/AppleModels/update_generated.py +++ b/AppleModels/update_generated.py @@ -138,11 +138,11 @@ def export_db_macinfolib(db, path, year=0): if max(info['AppleModelYear']) < year: continue - br_model = info.get('AppleModelId') - if br_model: - br_model = '"{}AP"'.format(br_model.upper()) + sb_model = info.get('AppleModelId') + if sb_model: + sb_model = '"{}"'.format(sb_model) else: - br_model = 'NULL' + sb_model = 'NULL' print(' {\n' ' .SystemProductName = "%s",\n' @@ -167,7 +167,7 @@ def export_db_macinfolib(db, path, year=0): ' .ChassisAssetTag = "%s",\n' ' .FirmwareFeatures = 0x%XULL,\n' ' .FirmwareFeaturesMask = 0x%XULL,\n' - ' .BridgeModel = %s,\n' + ' .SecureBootModel = %s,\n' ' },' % ( info['SystemProductName'], info['BoardProduct'][0] if isinstance(info['BoardProduct'], list) else info['BoardProduct'], @@ -191,7 +191,7 @@ def export_db_macinfolib(db, path, year=0): info['ChassisAssetTag'], info.get('ExtendedFirmwareFeatures', info.get('FirmwareFeatures', 0)), info.get('ExtendedFirmwareFeaturesMask', info.get('FirmwareFeaturesMask', 0)), - br_model + sb_model ), file=fh) print('};', file=fh) diff --git a/Changelog.md b/Changelog.md index 1cacc8e2..f0af1c11 100644 --- a/Changelog.md +++ b/Changelog.md @@ -9,6 +9,7 @@ OpenCore Changelog - Updated builtin firmware versions for SMBIOS and the rest - Added tool to extract vendor secure boot certificate from GRUB shim file - Added `BridgeOSHardwareModel` NVRAM variable to fix T2 SB AP models on macOS 12 +- Changed `Default` Apple Secure Boot model to match SMBIOS for macOS 12 #### v0.7.3 - Improved SSDT-PNLF compatibility with CFL+ graphics diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf index 39b45c6f..2c3468f0 100644 Binary files a/Docs/Configuration.pdf and b/Docs/Configuration.pdf differ diff --git a/Docs/Configuration.tex b/Docs/Configuration.tex index f15a4d53..1a8d76cb 100755 --- a/Docs/Configuration.tex +++ b/Docs/Configuration.tex @@ -4173,7 +4173,7 @@ rm vault.pub \begin{itemize} \tightlist - \item \texttt{Default} --- Recent available model, currently set to \texttt{x86legacy}. + \item \texttt{Default} --- Matching model for current SMBIOS. \item \texttt{Disabled} --- No model, Secure Boot will be disabled. \item \texttt{j137} --- \texttt{iMacPro1,1 (December 2017). Minimum macOS 10.13.2 (17C2111)} \item \texttt{j680} --- \texttt{MacBookPro15,1 (July 2018). Minimum macOS 10.13.6 (17G2112)} @@ -4195,12 +4195,15 @@ rm vault.pub \end{itemize} \emph{Warning}: Not all Apple Secure Boot models are supported on all hardware configurations. - Starting with macOS 12 \texttt{x86legacy} is the only Apple Secure Boot model compatible - with software update on hardware without T2 chips. Apple Secure Boot appeared in macOS 10.13 on models with T2 chips. - Since \texttt{PlatformInfo} and \texttt{SecureBootModel} are independent, - Apple Secure Boot can be used with any SMBIOS with and without T2. + Prior to macOS 12 \texttt{PlatformInfo} and \texttt{SecureBootModel} were independent, + allowing Apple Secure Boot can be used with any SMBIOS with and without T2. + Starting with macOS 12 \texttt{SecureBootModel} must match the SMBIOS Mac model. + \texttt{Default} model derives the model based on SMBIOS board identifier, either + set automatically via the \texttt{Generic} section or set manually via the \texttt{SMBIOS} section. + If there is no board identifier override the model will be derived heuristically from OEM SMBIOS. + Setting \texttt{SecureBootModel} to any valid value but \texttt{Disabled} is equivalent to \href{https://support.apple.com/en-us/HT208330}{\texttt{Medium Security}} diff --git a/Docs/Differences/Differences.pdf b/Docs/Differences/Differences.pdf index 46a23131..c6156697 100644 Binary files a/Docs/Differences/Differences.pdf and b/Docs/Differences/Differences.pdf differ diff --git a/Docs/Differences/Differences.tex b/Docs/Differences/Differences.tex index 081767c8..954ce6fb 100644 --- a/Docs/Differences/Differences.tex +++ b/Docs/Differences/Differences.tex @@ -1,7 +1,7 @@ \documentclass[]{article} %DIF LATEXDIFF DIFFERENCE FILE %DIF DEL PreviousConfiguration.tex Sun Sep 12 01:31:15 2021 -%DIF ADD ../Configuration.tex Sun Oct 3 07:48:42 2021 +%DIF ADD ../Configuration.tex Sun Oct 3 09:32:34 2021 \usepackage{lmodern} \usepackage{amssymb,amsmath} @@ -4246,7 +4246,8 @@ rm vault.pub \begin{itemize} \tightlist - \item \texttt{Default} --- Recent available model, currently set to \texttt{x86legacy}. + \item \texttt{Default} --- \DIFdelbegin \DIFdel{Recent available model , currently set to }\texttt{\DIFdel{x86legacy}}%DIFAUXCMD +\DIFdelend \DIFaddbegin \DIFadd{Matching model for current SMBIOS}\DIFaddend . \item \texttt{Disabled} --- No model, Secure Boot will be disabled. \item \texttt{j137} --- \texttt{iMacPro1,1 (December 2017). Minimum macOS 10.13.2 (17C2111)} \item \texttt{j680} --- \texttt{MacBookPro15,1 (July 2018). Minimum macOS 10.13.6 (17G2112)} @@ -4268,13 +4269,22 @@ rm vault.pub \end{itemize} \emph{Warning}: Not all Apple Secure Boot models are supported on all hardware configurations. - Starting with macOS 12 \texttt{x86legacy} is the only Apple Secure Boot model compatible +\DIFdelbegin \DIFdel{Starting with macOS 12 }\texttt{\DIFdel{x86legacy}} %DIFAUXCMD +\DIFdel{is the only Apple Secure Boot model compatible with software update on hardware without T2 chips. +}\DIFdelend Apple Secure Boot appeared in macOS 10.13 on models with T2 chips. - Since \texttt{PlatformInfo} and \texttt{SecureBootModel} are independent, - Apple Secure Boot can be used with any SMBIOS with and without T2. - Setting \texttt{SecureBootModel} to any valid value but \texttt{Disabled} + \DIFdelbegin \DIFdel{Since }\DIFdelend \DIFaddbegin \DIFadd{Prior to macOS 12 }\DIFaddend \texttt{PlatformInfo} and \texttt{SecureBootModel} \DIFdelbegin \DIFdel{are independent, + }\DIFdelend \DIFaddbegin \DIFadd{were independent, + allowing }\DIFaddend Apple Secure Boot can be used with any SMBIOS with and without T2. + \DIFaddbegin \DIFadd{Starting with macOS 12 }\texttt{\DIFadd{SecureBootModel}} \DIFadd{must match the SMBIOS Mac model. + }\texttt{\DIFadd{Default}} \DIFadd{model derives the model based on SMBIOS board identifier, either + set automatically via the }\texttt{\DIFadd{Generic}} \DIFadd{section or set manually via the }\texttt{\DIFadd{SMBIOS}} \DIFadd{section. + If there is no board identifier override the model will be derived heuristically from OEM SMBIOS. +} + + \DIFaddend Setting \texttt{SecureBootModel} to any valid value but \texttt{Disabled} is equivalent to \href{https://support.apple.com/en-us/HT208330}{\texttt{Medium Security}} of Apple Secure Boot. The \texttt{ApECID} value must also be specified to diff --git a/Docs/Errata/Errata.pdf b/Docs/Errata/Errata.pdf index e49c9756..f3481dad 100644 Binary files a/Docs/Errata/Errata.pdf and b/Docs/Errata/Errata.pdf differ diff --git a/Include/Acidanthera/Library/OcAppleImg4Lib.h b/Include/Acidanthera/Library/OcAppleImg4Lib.h index 64d439f1..e9921d21 100644 --- a/Include/Acidanthera/Library/OcAppleImg4Lib.h +++ b/Include/Acidanthera/Library/OcAppleImg4Lib.h @@ -27,6 +27,11 @@ **/ #define OC_SB_MODEL_DISABLED "Disabled" +/** + Legacy secure boot model (for all non-gibraltar models). +**/ +#define OC_SB_MODEL_LEGACY "x86legacy" + /** Verify the signature of ImageBuffer against Type of its IMG4 Manifest. @@ -78,8 +83,7 @@ OcAppleImg4RegisterOverride ( /** Obtain hardware model for secure booting from the model request. - @param[in] ModelRequest Raw model or configuration strings like - Latest or Disabled. + @param[in] ModelRequest Raw model. @retval Model in lower case on success. @retval NULL on failure diff --git a/Include/Acidanthera/Library/OcMacInfoLib.h b/Include/Acidanthera/Library/OcMacInfoLib.h index be4b96f9..17882bec 100644 --- a/Include/Acidanthera/Library/OcMacInfoLib.h +++ b/Include/Acidanthera/Library/OcMacInfoLib.h @@ -106,15 +106,11 @@ typedef struct MAC_INFO_DATA_ { /// Serial data. /// MAC_INFO_DATA_OEM Oem; - /// - /// Bridge model data. - /// - CONST CHAR8 *BridgeModel; } MAC_INFO_DATA; /** Obtain Mac info based on product name. - When exact match is not possible, any sane data may be returned. + When exact match is not possible, sane fallback will be returned. @param[in] ProductName Product to get information for. @param[out] MacInfo Information data to fill. @@ -125,6 +121,34 @@ GetMacInfo ( OUT MAC_INFO_DATA *MacInfo ); +/** + Obtain Mac secure boot model based on product name. + When exact match is not possible, sane fallback will be returned. + + @param[in] ProductName Product to get information for. + + @retval "x86legacy" For models that do not support secure boot. + @return Secure boot model name. +**/ +CONST CHAR8 * +GetSecureBootModel ( + IN CONST CHAR8 *ProductName + ); + +/** + Obtain Mac secure boot model based on board id. + When exact match is not possible, sane fallback will be returned. + + @param[in] BoardId Board identifer to get information for. + + @retval "x86legacy" For models that do not support secure boot. + @return Secure boot model name. +**/ +CONST CHAR8 * +GetSecureBootModelFromBoardId ( + IN CONST CHAR8 *BoardId + ); + /** Determine if specified product name is a real Mac model. diff --git a/Include/Acidanthera/Library/OcMainLib.h b/Include/Acidanthera/Library/OcMainLib.h index 9a9b19d2..982450cd 100644 --- a/Include/Acidanthera/Library/OcMainLib.h +++ b/Include/Acidanthera/Library/OcMainLib.h @@ -189,6 +189,17 @@ OcGetLegacySecureBootECID ( OUT UINT64 *ApECID ); +/** + Obtain default Secure Boot hardware model. + + @param[in] Config Configuration. + @return Apple Secure Boot model. +**/ +CONST CHAR8 * +OcGetDefaultSecureBootModel ( + IN OC_GLOBAL_CONFIG *Config + ); + /** Load platform compatibility support like DataHub or SMBIOS. diff --git a/Library/OcAppleImg4Lib/OcAppleImg4Lib.c b/Library/OcAppleImg4Lib/OcAppleImg4Lib.c index a9fe0d62..8b90ae16 100644 --- a/Library/OcAppleImg4Lib/OcAppleImg4Lib.c +++ b/Library/OcAppleImg4Lib/OcAppleImg4Lib.c @@ -42,7 +42,6 @@ typedef struct OC_SB_MODEL_DESC_ { STATIC CHAR8 mCryptoDigestMethod[16] = "sha2-384"; STATIC DERImg4Environment mEnvInfo; -STATIC CONST CHAR8 *mModelDefault = "x86legacy"; /// /// List of model mapping to board identifiers. /// Alphabetically sorted (!), for release order refer to the documentation. @@ -64,7 +63,7 @@ STATIC OC_SB_MODEL_DESC mModelInformation[] = { { "j230k", 0x3F }, ///< MacBookAir9,1 { "j680", 0x0B }, ///< MacBookPro15,1 { "j780", 0x07 }, ///< MacBookPro15,3 - { "x86legacy", 0xF0 }, ///< Generic x86 from Big Sur + { OC_SB_MODEL_LEGACY, 0xF0 }, ///< Generic x86 from Big Sur }; STATIC BOOLEAN mHasDigestOverride; @@ -160,10 +159,6 @@ OcAppleImg4GetHardwareModel ( { OC_SB_MODEL_DESC *ModelInfo; - if (AsciiStrCmp (ModelRequest, OC_SB_MODEL_DEFAULT) == 0 || ModelRequest[0] == '\0') { - ModelRequest = mModelDefault; - } - ModelInfo = InternalGetModelInfo (ModelRequest); if (ModelInfo != NULL) { return ModelInfo->HardwareModel; @@ -362,7 +357,7 @@ OcAppleImg4BootstrapValues ( mEnvInfo.securityMode = 1; mEnvInfo.effectiveProductionStatus = TRUE; mEnvInfo.effectiveSecurityMode = 1; - mEnvInfo.internalUseOnlyUnit = AsciiStrCmp (Model, "x86legacy") == 0; + mEnvInfo.internalUseOnlyUnit = AsciiStrCmp (Model, OC_SB_MODEL_LEGACY) == 0; mEnvInfo.xugs = 1; mEnvInfo.allowMixNMatch = FALSE; diff --git a/Library/OcMacInfoLib/AutoGenerated.c b/Library/OcMacInfoLib/AutoGenerated.c index b09c99c4..fe04407b 100755 --- a/Library/OcMacInfoLib/AutoGenerated.c +++ b/Library/OcMacInfoLib/AutoGenerated.c @@ -24,7 +24,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook10,1", @@ -49,7 +49,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE13FULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook2,1", @@ -74,7 +74,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook3,1", @@ -99,7 +99,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001407ULL, .FirmwareFeaturesMask = 0xC0001FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook4,1", @@ -124,7 +124,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0003FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook5,1", @@ -149,7 +149,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook5,2", @@ -174,7 +174,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook6,1", @@ -199,7 +199,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xFC0FE13FULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook7,1", @@ -224,7 +224,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xFC0FE13FULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook8,1", @@ -249,7 +249,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Chassis Board Asset Tag#", .FirmwareFeatures = 0xFC0FE13FULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBook9,1", @@ -274,7 +274,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE13FULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir1,1", @@ -299,7 +299,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0003FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir2,1", @@ -324,7 +324,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir3,1", @@ -349,7 +349,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir3,2", @@ -374,7 +374,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir4,1", @@ -399,7 +399,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir4,2", @@ -424,7 +424,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir5,1", @@ -449,7 +449,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir5,2", @@ -474,7 +474,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir6,1", @@ -499,7 +499,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir6,2", @@ -524,7 +524,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir7,1", @@ -549,7 +549,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Chassis Board Asset Tag#", .FirmwareFeatures = 0x8FF0FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir7,2", @@ -574,7 +574,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Chassis Board Asset Tag#", .FirmwareFeatures = 0x8FF0FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookAir8,1", @@ -599,7 +599,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF42EULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J140KAP", + .SecureBootModel = "J140K", }, { .SystemProductName = "MacBookAir8,2", @@ -624,7 +624,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF42EULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J140AAP", + .SecureBootModel = "J140A", }, { .SystemProductName = "MacBookAir9,1", @@ -649,7 +649,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FFAFF06EULL, .FirmwareFeaturesMask = 0x8FFFFFF7FULL, - .BridgeModel = "J230KAP", + .SecureBootModel = "J230K", }, { .SystemProductName = "MacBookPro1,1", @@ -674,7 +674,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro1,2", @@ -699,7 +699,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro10,1", @@ -724,7 +724,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro10,2", @@ -749,7 +749,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro11,1", @@ -774,7 +774,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xEB0FF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro11,2", @@ -799,7 +799,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xEB0FF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro11,3", @@ -824,7 +824,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xEB0FF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro11,4", @@ -849,7 +849,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xEB0FF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro11,5", @@ -874,7 +874,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xEB0FF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro12,1", @@ -899,7 +899,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD0FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro13,1", @@ -924,7 +924,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro13,2", @@ -949,7 +949,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro13,3", @@ -974,7 +974,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro14,1", @@ -999,7 +999,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FF0FF57EULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro14,2", @@ -1024,7 +1024,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FF0FF57EULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro14,3", @@ -1049,7 +1049,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FF0FF57EULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro15,1", @@ -1074,7 +1074,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF426ULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J680AP", + .SecureBootModel = "J680", }, { .SystemProductName = "MacBookPro15,2", @@ -1099,7 +1099,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF426ULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J132AP", + .SecureBootModel = "J132", }, { .SystemProductName = "MacBookPro15,3", @@ -1124,7 +1124,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF426ULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J780AP", + .SecureBootModel = "J780", }, { .SystemProductName = "MacBookPro15,4", @@ -1149,7 +1149,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF426ULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J213AP", + .SecureBootModel = "J213", }, { .SystemProductName = "MacBookPro16,1", @@ -1174,7 +1174,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FDAFF066ULL, .FirmwareFeaturesMask = 0x8FFFFFF7FULL, - .BridgeModel = "J152FAP", + .SecureBootModel = "J152F", }, { .SystemProductName = "MacBookPro16,2", @@ -1199,7 +1199,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FFAFF06EULL, .FirmwareFeaturesMask = 0x8FFFFFF7FULL, - .BridgeModel = "J214KAP", + .SecureBootModel = "J214K", }, { .SystemProductName = "MacBookPro16,3", @@ -1224,7 +1224,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FDAFF066ULL, .FirmwareFeaturesMask = 0x8FFFFFF7FULL, - .BridgeModel = "J223AP", + .SecureBootModel = "J223", }, { .SystemProductName = "MacBookPro16,4", @@ -1249,7 +1249,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FDAFF066ULL, .FirmwareFeaturesMask = 0x8FFFFFF7FULL, - .BridgeModel = "J215AP", + .SecureBootModel = "J215", }, { .SystemProductName = "MacBookPro2,1", @@ -1274,7 +1274,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro2,2", @@ -1299,7 +1299,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro3,1", @@ -1324,7 +1324,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001407ULL, .FirmwareFeaturesMask = 0xC0001FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro4,1", @@ -1349,7 +1349,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0003FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro5,1", @@ -1374,7 +1374,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro5,2", @@ -1399,7 +1399,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro5,3", @@ -1424,7 +1424,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro5,4", @@ -1449,7 +1449,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro5,5", @@ -1474,7 +1474,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro6,1", @@ -1499,7 +1499,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro6,2", @@ -1524,7 +1524,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro7,1", @@ -1549,7 +1549,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro8,1", @@ -1574,7 +1574,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro8,2", @@ -1599,7 +1599,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro8,3", @@ -1624,7 +1624,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro9,1", @@ -1649,7 +1649,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacBookPro9,2", @@ -1674,7 +1674,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC10DF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro1,1", @@ -1699,7 +1699,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x80000015ULL, .FirmwareFeaturesMask = 0x800003FFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro2,1", @@ -1724,7 +1724,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0000015ULL, .FirmwareFeaturesMask = 0xC0000FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro3,1", @@ -1749,7 +1749,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Pro-Enclosure", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0003FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro4,1", @@ -1774,7 +1774,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Pro-Enclosure", .FirmwareFeatures = 0xE001F537ULL, .FirmwareFeaturesMask = 0xC003FF37ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro5,1", @@ -1799,7 +1799,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE80FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro6,1", @@ -1824,7 +1824,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8E90FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "MacPro7,1", @@ -1849,7 +1849,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FDAFF066ULL, .FirmwareFeaturesMask = 0x8FFFFFF7FULL, - .BridgeModel = "J160AP", + .SecureBootModel = "J160", }, { .SystemProductName = "Macmini1,1", @@ -1874,7 +1874,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini2,1", @@ -1899,7 +1899,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini3,1", @@ -1924,7 +1924,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0007FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini4,1", @@ -1949,7 +1949,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00C9423ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini5,1", @@ -1974,7 +1974,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini5,2", @@ -1999,7 +1999,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini5,3", @@ -2024,7 +2024,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xD00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini6,1", @@ -2049,7 +2049,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini6,2", @@ -2074,7 +2074,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini7,1", @@ -2099,7 +2099,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8E00DE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Macmini8,1", @@ -2124,7 +2124,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF466ULL, .FirmwareFeaturesMask = 0x8FFDFFF7FULL, - .BridgeModel = "J174AP", + .SecureBootModel = "J174", }, { .SystemProductName = "Xserve1,1", @@ -2149,7 +2149,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Xserve2,1", @@ -2174,7 +2174,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "Xserve3,1", @@ -2199,7 +2199,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Xserve", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac10,1", @@ -2224,7 +2224,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac11,1", @@ -2249,7 +2249,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac11,2", @@ -2274,7 +2274,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xC00C9423ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac11,3", @@ -2299,7 +2299,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac12,1", @@ -2324,7 +2324,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac12,2", @@ -2349,7 +2349,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac13,1", @@ -2374,7 +2374,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac13,2", @@ -2399,7 +2399,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac13,3", @@ -2424,7 +2424,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00DE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac14,1", @@ -2449,7 +2449,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xFB0FF577ULL, .FirmwareFeaturesMask = 0xFF1FFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac14,2", @@ -2474,7 +2474,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac14,3", @@ -2499,7 +2499,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xE00FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac14,4", @@ -2524,7 +2524,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xF00FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac15,1", @@ -2549,7 +2549,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0xF80FE137ULL, .FirmwareFeaturesMask = 0xFF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac16,1", @@ -2574,7 +2574,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac16,2", @@ -2599,7 +2599,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac17,1", @@ -2624,7 +2624,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FC0FE137ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac18,1", @@ -2649,7 +2649,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD0FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac18,2", @@ -2674,7 +2674,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD0FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac18,3", @@ -2699,7 +2699,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD0FF576ULL, .FirmwareFeaturesMask = 0x8FF1FFF3FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac19,1", @@ -2724,7 +2724,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF576ULL, .FirmwareFeaturesMask = 0x8FFDFFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac19,2", @@ -2749,7 +2749,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF576ULL, .FirmwareFeaturesMask = 0x8FFDFFF7FULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac20,1", @@ -2774,7 +2774,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF576ULL, .FirmwareFeaturesMask = 0x8FFDFFF7FULL, - .BridgeModel = "J185AP", + .SecureBootModel = "J185", }, { .SystemProductName = "iMac20,2", @@ -2799,7 +2799,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF576ULL, .FirmwareFeaturesMask = 0x8FFDFFF7FULL, - .BridgeModel = "J185FAP", + .SecureBootModel = "J185F", }, { .SystemProductName = "iMac4,1", @@ -2824,7 +2824,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac4,2", @@ -2849,7 +2849,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac5,1", @@ -2874,7 +2874,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac5,2", @@ -2899,7 +2899,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac6,1", @@ -2924,7 +2924,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag", .FirmwareFeatures = 0x0ULL, .FirmwareFeaturesMask = 0x0ULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac7,1", @@ -2949,7 +2949,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001407ULL, .FirmwareFeaturesMask = 0xC0001FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac8,1", @@ -2974,7 +2974,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0003FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMac9,1", @@ -2999,7 +2999,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "Asset Tag#", .FirmwareFeatures = 0xC0001403ULL, .FirmwareFeaturesMask = 0xC0003FFFULL, - .BridgeModel = NULL, + .SecureBootModel = NULL, }, { .SystemProductName = "iMacPro1,1", @@ -3024,7 +3024,7 @@ CONST MAC_INFO_INTERNAL_ENTRY gMacInfoModels[] = { .ChassisAssetTag = "", .FirmwareFeatures = 0x8FD8FF53EULL, .FirmwareFeaturesMask = 0x8FF9FFF3FULL, - .BridgeModel = "J137AP", + .SecureBootModel = "J137", }, }; CONST UINTN gMacInfoModelCount = ARRAY_SIZE (gMacInfoModels); diff --git a/Library/OcMacInfoLib/MacInfoInternal.h b/Library/OcMacInfoLib/MacInfoInternal.h index 764a5f8b..89ab33d2 100644 --- a/Library/OcMacInfoLib/MacInfoInternal.h +++ b/Library/OcMacInfoLib/MacInfoInternal.h @@ -42,7 +42,7 @@ typedef struct { CONST CHAR8 * CONST ChassisAssetTag; CONST UINT64 FirmwareFeatures; CONST UINT64 FirmwareFeaturesMask; - CONST CHAR8 * CONST BridgeModel; + CONST CHAR8 * CONST SecureBootModel; } MAC_INFO_INTERNAL_ENTRY; // diff --git a/Library/OcMacInfoLib/OcMacInfoLib.c b/Library/OcMacInfoLib/OcMacInfoLib.c index 2c95cfb1..8f81b351 100755 --- a/Library/OcMacInfoLib/OcMacInfoLib.c +++ b/Library/OcMacInfoLib/OcMacInfoLib.c @@ -149,8 +149,52 @@ GetMacInfo ( if (InternalEntry->PlatformFeature != MAC_INFO_PLATFORM_FEATURE_MISSING) { MacInfo->Smbios.PlatformFeature = &InternalEntry->PlatformFeature; } +} - MacInfo->BridgeModel = InternalEntry->BridgeModel; +CONST CHAR8 * +GetSecureBootModel ( + IN CONST CHAR8 *ProductName + ) +{ + CONST MAC_INFO_INTERNAL_ENTRY *InternalEntry; + + InternalEntry = LookupInternalEntry (ProductName); + if (InternalEntry == NULL) { + // + // Fallback to default model if given ProductName is not found. + // + InternalEntry = &gMacInfoModels[gMacInfoDefaultModel]; + } + + if (InternalEntry->SecureBootModel == NULL) { + return "x86legacy"; + } + + return InternalEntry->SecureBootModel; +} + +CONST CHAR8 * +GetSecureBootModelFromBoardId ( + IN CONST CHAR8 *BoardId + ) +{ + UINTN Index; + + for (Index = 0; Index < gMacInfoModelCount; ++Index) { + if (AsciiStrCmp (gMacInfoModels[Index].BoardProduct, BoardId) == 0) { + if (gMacInfoModels[Index].SecureBootModel != NULL) { + return gMacInfoModels[Index].SecureBootModel; + } + + break; + } + } + + // + // Note, this will not match some models with multiple board-id values, + // but from what we know these models do not support SB anyway. + // + return "x86legacy"; } BOOLEAN diff --git a/Library/OcMainLib/OpenCorePlatform.c b/Library/OcMainLib/OpenCorePlatform.c index 791e5b0f..33fdb2d1 100644 --- a/Library/OcMainLib/OpenCorePlatform.c +++ b/Library/OcMainLib/OpenCorePlatform.c @@ -935,6 +935,60 @@ OcGetLegacySecureBootECID ( CopyMem (ApECID, &Uuid, sizeof (*ApECID)); } +CONST CHAR8 * +OcGetDefaultSecureBootModel ( + IN OC_GLOBAL_CONFIG *Config + ) +{ + EFI_STATUS Status; + CONST CHAR8 *Model; + CONST CHAR8 *Board; + CONST CHAR8 *SbModel; + OC_SMBIOS_TABLE SmbiosTable; + + // + // For automatic setups it is direct DB retrieval. + // + if (Config->PlatformInfo.Automatic) { + Model = OC_BLOB_GET (&Config->PlatformInfo.Generic.SystemProductName); + SbModel = GetSecureBootModel (Model); + DEBUG ((DEBUG_INFO, "OC: Automatic SB model %a from model %a\n", SbModel, Model)); + return SbModel; + } + + // + // For manual setups only use the SMBIOS board identifier. + // + Board = OC_BLOB_GET (&Config->PlatformInfo.Smbios.BoardProduct); + if (Config->PlatformInfo.UpdateSmbios && Board[0] != '\0') { + SbModel = GetSecureBootModelFromBoardId (Board); + DEBUG ((DEBUG_INFO, "OC: Manual SB model %a from board %a\n", SbModel, Board)); + return SbModel; + } + + // + // For Mac setups without spoofing use SMBIOS. + // + Status = OcSmbiosTablePrepare (&SmbiosTable); + if (!EFI_ERROR (Status)) { + OcSmbiosExtractOemInfo ( + &SmbiosTable, + mCurrentSmbiosProductName, + NULL, + NULL, + NULL, + NULL, + Config->PlatformInfo.UseRawUuidEncoding, + FALSE + ); + OcSmbiosTableFree (&SmbiosTable); + } + + SbModel = GetSecureBootModel (mCurrentSmbiosProductName); + DEBUG ((DEBUG_INFO, "OC: OEM SB model %a from model %a\n", SbModel, mCurrentSmbiosProductName)); + return SbModel; +} + BOOLEAN OcPlatformIs64BitSupported ( IN UINT32 KernelVersion diff --git a/Library/OcMainLib/OpenCoreUefi.c b/Library/OcMainLib/OpenCoreUefi.c index 48e05f10..f928312d 100644 --- a/Library/OcMainLib/OpenCoreUefi.c +++ b/Library/OcMainLib/OpenCoreUefi.c @@ -450,13 +450,17 @@ OcLoadAppleSecureBoot ( UINT8 SecureBootPolicy; SecureBootModel = OC_BLOB_GET (&Config->Misc.Security.SecureBootModel); + if (AsciiStrCmp (SecureBootModel, OC_SB_MODEL_DEFAULT) == 0 || SecureBootModel[0] == '\0') { + SecureBootModel = OcGetDefaultSecureBootModel (Config); + } + RealSecureBootModel = OcAppleImg4GetHardwareModel (SecureBootModel); if (AsciiStrCmp (SecureBootModel, OC_SB_MODEL_DISABLED) == 0) { SecureBootPolicy = AppleImg4SbModeDisabled; } else if (Config->Misc.Security.ApECID != 0 && (RealSecureBootModel == NULL - || AsciiStrCmp (RealSecureBootModel, "x86legacy") != 0)) { + || AsciiStrCmp (RealSecureBootModel, OC_SB_MODEL_LEGACY) != 0)) { // // Note, for x86legacy it is always medium policy. // @@ -494,7 +498,7 @@ OcLoadAppleSecureBoot ( // This is what Apple does at least. // I believe no ECID is invalid for macOS 12. // - if (AsciiStrCmp (RealSecureBootModel, "x86legacy") == 0 + if (AsciiStrCmp (RealSecureBootModel, OC_SB_MODEL_LEGACY) == 0 && Config->Misc.Security.ApECID == 0) { DEBUG ((DEBUG_INFO, "OC: Discovered x86legacy with zero ECID, using system-id\n")); OcGetLegacySecureBootECID (Config, &Config->Misc.Security.ApECID);