summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-12-27MOK doesn't include the signature ownerGary Ching-Pang Lin
2012-12-27Add a general function for password matchingGary Ching-Pang Lin
2012-12-27Reboot the system after enrolling/erasing keysGary Ching-Pang Lin
2012-12-20Clear the screen before erasing keysGary Ching-Pang Lin
2012-12-10Get the second stage loader from the Load OptionsGary Ching-Pang Lin
This commit replaces the 2nd stage loader path with the first argument in the Load Options and moves the rest arguments (if any) to the Load Options for the 2nd stage loader. For example, to make shim to load elilo.efi, just create a new boot entry with efibootmgr: # efibootmgr -c -L "shim elilo" -l "efi\\shim.efi" -u "elilo.efi"
2012-11-27Remove debug codeMatthew Garrett
secure_mode() was altered to always return true for debug purposes, and this accidentally got committed to mainline. Fix that.
2012-11-26Sign MokManager with a locally-generated keyMatthew Garrett
shim needs to verify that MokManager hasn't been modified, but we want to be able to support configurations where shim is shipped without a vendor certificate. This patch adds support for generating a certificate at build time, incorporating the public half into shim and signing MokManager with the private half. It uses pesign and nss, but still requires openssl for key generation. Anyone using sbsign will need to figure this out for themselves.
2012-11-01Don't fail if there's no network devicesMatthew Garrett
findNetboot() would continue blindly even if no PXE-capable devices were found. Fix that.
2012-11-01Bump versionMatthew Garrett
This seems pretty much functionally complete, so let's call it 0.2.
2012-11-01Merge branch 'mok' into netbootMatthew Garrett
Conflicts: shim.c
2012-11-01Add commentsMatthew Garrett
2012-11-01Merge branch 'mok' into netbootMatthew Garrett
Conflicts: Makefile shim.c
2012-11-01Fix AuthenticodeVerify loopMatthew Garrett
Cert needs to be modified inside the Index loop, not outside it. This is unlikely to ever trigger since there will typically only be one X509 certificate per EFI_SIGNATURE_LIST, but fix it anyway.
2012-11-01Fix signature checkingMatthew Garrett
We could potentially find a valid signature and then fail to validate it due to not breaking out of the outer while loop.
2012-11-01Fix double freeMatthew Garrett
load_image() didn't allocate PathName, don't have it free it.
2012-11-01Fix up some typesMatthew Garrett
Type-checking the UEFI calls picked up a couple of problems. Fix them up.
2012-10-30Add documentation of the Mok variablesMatthew Garrett
Brief overview of the function and format of the various variables used by Shim and MokManager.
2012-10-30Merge branch 'mok' of github.com:mjg59/shim into mokMatthew Garrett
2012-10-30Check the vendor blacklist correctlyGary Ching-Pang Lin
2012-10-30Initialize the size of vendor dbx as 0Gary Ching-Pang Lin
The size of vendor dbx must be 0 if there is no vendor dbx provided or the functions of db check will crash.
2012-10-24Clean up password settingMatthew Garrett
Permit clearing of the password, and avoid a case where choosing not to set a password would result in an error message on exit. Fix the same problem with MokSB.
2012-10-24Improve signature validation enable/disableMatthew Garrett
The logic used in checking the signature validation password was a bit ugly. Improve that so it behaves rather more as expected.
2012-10-24Boot unsigned binaries if we're not in secure modeMatthew Garrett
read_header would fail if the binary was unsigned, even if we weren't then going to verify the signature. Move that check to the verify function instead.
2012-10-24Miscellaneous small fixupsMatthew Garrett
Fixes for some small bugs noticed during review
2012-10-23Add another missing screen clearingMatthew Garrett
Another case where we were drawing text over existing text.
2012-10-23Merge branch 'mok' of github.com:mjg59/shim into mokMatthew Garrett
2012-10-23Fix password hash calculationMatthew Garrett
This was hardcoded, rather than being based on the actual password length, resulting in incorrect hashes being generated.
2012-10-23Update image validation enable/disableMatthew Garrett
Update this to match the new mokutil behaviour
2012-10-23Delete MokList properlyMatthew Garrett
A cut and paste error meant that attempts to delete MokList were instead appending a zero-length addition.
2012-10-23Clean up checks for MokManager entryMatthew Garrett
Add a helper function and tidy up the calls for getting into MokManager
2012-10-23Fix key database parsingMatthew Garrett
The pointer to the certificate needs to be incremented by the size of the entire certificate, not just the certificate data.
2012-10-23Support a vendor-specific DBX list.Peter Jones
In some rare corner cases, it's useful to add a blacklist of things that were allowed by a copy of shim that was never signed by the UEFI signing service. In these cases it's okay for them to go into a local dbx, rather than taking up precious flash. Signed-off-by: Peter Jones <pjones@redhat.com>
2012-10-18Clear screen before promptingMatthew Garrett
We were drawing prompts on top of existing text, which was less than ideal.
2012-10-18Don't print SHA1 sum when calculating file fingerprintsMatthew Garrett
There's no point in printing the SHA1 of a SHA256...
2012-10-18Clean up timeout counter handlingMatthew Garrett
Reduce menu redrawing by only redrawing the invalidated section of the menu during the timeout countdown.
2012-10-18Add MOK password authMatthew Garrett
Add support for setting an MOK password. The OS passes down a password hash. MokManager then presents an option for setting a password. Selecting it prompts the user for the same password again. If they match, the hash is enrolled into a boot services variable and MokManager will prompt for the password whenever it's started.
2012-10-18Pause on callback failuresMatthew Garrett
If a callback returns any kind of failure, wait for a keypress in order to give the user an opportunity to read any failure messages.
2012-10-18Skip signature checking if insecureMatthew Garrett
If we're configured to run untrusted code, print a message and skip the validation checks.
2012-10-18Add support for disabling signature verificationMatthew Garrett
Provide a mechanism for a physically present end user to disable signature verification. This is handled by the OS passing down a variable that contains a UINT32 and a SHA256 hash. If this variable is present, MokManager prompts the user to choose whether to enable or disable signature validation (depending on the value of the UINT32). They are then asked to type the passphrase that matches the hash. This then saves a boot services variable which is checked by shim, and if set will skip verification of signatures.
2012-10-13Add section headersMatthew Garrett
Provide a little more contextual information when people are in shim menus.
2012-10-12Add draft version of Neil's netboot codeMatthew Garrett
2012-10-12Reallocate the DevPath space for the volume labelGary Ching-Pang Lin
The size of the DevPath string array was not sufficient to append the volume label. This patch extends the size for the label and re-enables the menu freeing.
2012-10-12Remove LoadImage/StartImage supportMatthew Garrett
Some systems will show an error dialog if LoadImage() returned EFI_ACCESS_DENIED, which then requires physical user interaction to skip. Let's just remove the LoadImage/StartImage code, since the built-in code is theoretically equivalent.
2012-10-12Switch to using db format for MokList and MokNewMatthew Garrett
Using the same format as the UEFI key databases makes it easier for the kernel to parse and extract keys from MOK, and also permits MOK to contain multiple key or hash types. Additionally, add support for enrolling hashes.
2012-10-11Split out hashingMatthew Garrett
We want to be able to generate hashes, so split out the hash generation function from the verification function
2012-10-11Add missing header defineMatthew Garrett
2012-10-11Add SHA1 supportMatthew Garrett
In theory vendors could blacklist binaries with SHA1, so make sure we calculate and check that hash as well.
2012-10-11Add menu headerMatthew Garrett
Add a basic header to the menu to make it clearer what's going on. Define SHIM_VENDOR in order to override the default.
2012-10-11Clear screen on exitMatthew Garrett
2012-10-11Add timeout supportMatthew Garrett
We should time out if there aren't any keypresses at the top level menu within a reasonable timeframe.