Matthew Garrett
6f16162653
Fix double free
...
load_image() didn't allocate PathName, don't have it free it.
2012-11-01 10:12:20 -04:00
Matthew Garrett
ed711b02ec
Fix up some types
...
Type-checking the UEFI calls picked up a couple of problems. Fix them up.
2012-11-01 09:46:51 -04:00
Matthew Garrett
5a8d573fb1
Add documentation of the Mok variables
...
Brief overview of the function and format of the various variables used
by Shim and MokManager.
2012-10-30 16:14:02 -04:00
Matthew Garrett
0a0cd6ba77
Merge branch 'mok' of github.com:mjg59/shim into mok
2012-10-30 15:59:40 -04:00
Gary Ching-Pang Lin
8b7685b212
Check the vendor blacklist correctly
2012-10-30 10:35:36 -04:00
Gary Ching-Pang Lin
ba00aadb45
Initialize the size of vendor dbx as 0
...
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-30 10:35:36 -04:00
Matthew Garrett
d77f421bcc
Clean up password setting
...
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-24 01:14:50 -04:00
Matthew Garrett
8a1690683f
Improve signature validation enable/disable
...
The logic used in checking the signature validation password was a bit
ugly. Improve that so it behaves rather more as expected.
2012-10-24 01:05:45 -04:00
Matthew Garrett
832e5161b5
Boot unsigned binaries if we're not in secure mode
...
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-24 00:10:29 -04:00
Matthew Garrett
cbe214072b
Miscellaneous small fixups
...
Fixes for some small bugs noticed during review
2012-10-24 00:09:08 -04:00
Matthew Garrett
6e05b32d07
Add another missing screen clearing
...
Another case where we were drawing text over existing text.
2012-10-23 23:46:44 -04:00
Matthew Garrett
4049bc496f
Merge branch 'mok' of github.com:mjg59/shim into mok
2012-10-23 15:45:04 -04:00
Matthew Garrett
254c04bcdd
Fix password hash calculation
...
This was hardcoded, rather than being based on the actual password length,
resulting in incorrect hashes being generated.
2012-10-23 15:43:29 -04:00
Matthew Garrett
79a5aa039d
Update image validation enable/disable
...
Update this to match the new mokutil behaviour
2012-10-23 15:43:10 -04:00
Matthew Garrett
868d5b9038
Delete MokList properly
...
A cut and paste error meant that attempts to delete MokList were instead
appending a zero-length addition.
2012-10-23 13:01:48 -04:00
Matthew Garrett
d5a2d9ea08
Clean up checks for MokManager entry
...
Add a helper function and tidy up the calls for getting into MokManager
2012-10-23 13:01:25 -04:00
Matthew Garrett
3a59336199
Fix key database parsing
...
The pointer to the certificate needs to be incremented by the size of the
entire certificate, not just the certificate data.
2012-10-23 13:00:40 -04:00
Peter Jones
5f0a358b63
Support a vendor-specific DBX list.
...
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-23 11:47:41 -04:00
Matthew Garrett
34f0c4abc0
Clear screen before prompting
...
We were drawing prompts on top of existing text, which was less than
ideal.
2012-10-18 17:43:53 -04:00
Matthew Garrett
16c512f9b5
Don't print SHA1 sum when calculating file fingerprints
...
There's no point in printing the SHA1 of a SHA256...
2012-10-18 17:43:53 -04:00
Matthew Garrett
37635f5414
Clean up timeout counter handling
...
Reduce menu redrawing by only redrawing the invalidated section of the menu
during the timeout countdown.
2012-10-18 17:43:53 -04:00
Matthew Garrett
801d1b936b
Add MOK password auth
...
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-18 17:43:53 -04:00
Matthew Garrett
d08ea5363c
Pause on callback failures
...
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-18 17:43:53 -04:00
Matthew Garrett
9eaadb0d11
Skip signature checking if insecure
...
If we're configured to run untrusted code, print a message and skip the
validation checks.
2012-10-18 17:43:53 -04:00
Matthew Garrett
9272bc5b84
Add support for disabling signature verification
...
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-18 17:41:52 -04:00
Matthew Garrett
1bc1cd96e4
Add section headers
...
Provide a little more contextual information when people are in shim
menus.
2012-10-13 01:07:43 -04:00
Matthew Garrett
1c5957068f
Add draft version of Neil's netboot code
2012-10-12 20:14:14 -04:00
Gary Ching-Pang Lin
e65370d770
Reallocate the DevPath space for the volume label
...
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-12 20:09:33 -04:00
Matthew Garrett
683959d7ad
Remove LoadImage/StartImage support
...
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-12 19:55:20 -04:00
Matthew Garrett
0a6565c5ed
Switch to using db format for MokList and MokNew
...
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-12 19:55:20 -04:00
Matthew Garrett
f394b22e86
Split out hashing
...
We want to be able to generate hashes, so split out the hash generation
function from the verification function
2012-10-11 12:24:36 -04:00
Matthew Garrett
7fa4dae051
Add missing header define
2012-10-11 12:13:18 -04:00
Matthew Garrett
ce6a5748b0
Add SHA1 support
...
In theory vendors could blacklist binaries with SHA1, so make sure we
calculate and check that hash as well.
2012-10-11 11:30:41 -04:00
Matthew Garrett
e204505d2d
Add menu header
...
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-11 09:55:14 -04:00
Matthew Garrett
5f292f8f91
Clear screen on exit
2012-10-11 09:45:14 -04:00
Matthew Garrett
202b5c3e12
Add timeout support
...
We should time out if there aren't any keypresses at the top level menu
within a reasonable timeframe.
2012-10-11 09:44:27 -04:00
Matthew Garrett
66fe4506fb
Fix whitespace
2012-10-11 09:26:16 -04:00
Gary Ching-Pang Lin
dfbe823b53
Remove unnecessary newline
...
The newline character shouldn't be present in the menu item string
2012-10-11 09:24:06 -04:00
Gary Ching-Pang Lin
d6332c078f
Pass the size of MokNew to the key enrollment function
...
The size of MokNew was missing and it caused crash when enrolling new MOKs
with mokutil
2012-10-11 09:24:06 -04:00
Matthew Garrett
4aeb0a9162
Callbacks should return INTN, not UINTN
2012-10-09 09:44:55 -04:00
Matthew Garrett
41f5d6095f
Remove unused variable
2012-10-09 09:43:37 -04:00
Matthew Garrett
c9696a1c97
Don't lose the last file in top-level directories
...
The filesystem callback was failing to account for the additional menu
item to return to the filesystem list, and so the last file entry in the
root directory would be missing from the list.
2012-10-09 09:43:08 -04:00
Matthew Garrett
d1c2586c23
Fix filesystem enrollment
...
We would always enrol a single key, deleting any existing keys in the
database. Fix that up.
2012-10-08 17:35:50 -04:00
Matthew Garrett
1e9de96f8a
Add an auth argument to store_keys()
...
If the user is manually installing keys from a filesystem then we don't need
to ask for the key password.
2012-10-08 17:34:55 -04:00
Matthew Garrett
cb22de62e7
Add __attribute__ ((packed)) to MokListNode definition
...
Packing this lets us use MokListNode with the binary MokList representation.
2012-10-08 17:33:32 -04:00
Matthew Garrett
9201fa9ec6
Disable menu freeing
...
This looks like it ought to work, but is currently failing. Leaking here
isn't a big deal, so just disable it until I figure out what's wrong.
2012-10-06 17:52:38 -04:00
Matthew Garrett
a68a0c7b03
Fix menucount
...
Menucount wasn't being incremented for the final top level menu, so
the file explorer menu item wasn't appearing.
2012-10-06 17:39:21 -04:00
Matthew Garrett
c9d2ff8c40
Free menus and add statics
...
Make sure we free menu items after exiting a menu. Also, add some missing
static annotations.
2012-10-06 17:30:49 -04:00
Matthew Garrett
24eace9953
Fix menu items
...
Only show the MOK manipulation menu item if MokNew existed
2012-10-06 17:30:46 -04:00
Matthew Garrett
27a8fc9fd1
Always show the MokManager UI
...
If someone explicitly starts MokManager then we want to show the UI
2012-10-06 17:22:33 -04:00