Commit Graph

517 Commits

Author SHA1 Message Date
bea1e38c67 Move ECCSignature to Common::ec and give it a less confusing name 2018-05-27 14:01:38 +02:00
44827ba369 Use CertECC struct instead of hardcoded offsets 2018-05-27 14:01:38 +02:00
7c6844e895 ES/Formats: Work around a GCC bug
In old GCC versions, capturing 'this' does not work for some lambdas.
The workaround is to not use auto for the parameter (even though the
type is obvious). This can be dropped once we require GCC 7.
2018-05-24 21:27:40 +02:00
af97df74e1 Merge pull request #6895 from leoetlino/hardcoded
IOSC: Fix hardcoded MS and CA IDs
2018-05-21 15:27:31 +02:00
12e2012465 IOSC: Fix hardcoded MS and CA IDs
The values that are used for the MS and CA IDs come from the SEEPROM.
Also, the default CA and MS values are respectively 2 and 3,
not 1 and 2.
2018-05-21 15:11:25 +02:00
4b0f8d9f85 ES: Implement VerifySign
This implements ES_VerifySign which is notably used by the system menu
when importing saves.

Now *all* ES commands that are actually used by titles are implemented.
2018-05-20 20:04:53 +02:00
cec7fded60 IOSC: Implement VerifyPublicKeySign for ECC 2018-05-20 20:04:53 +02:00
b86f1ea7b3 ES / IOSC: Add support for ECC certificates 2018-05-20 20:04:53 +02:00
355b1b5d5b ec: Improve readability and clarity
- Move all of the ec functions into the Common::ec namespace.

- Give the public functions better names and some usage information.

- Move all of the "elt" related functions into an "elt" class including
  all of the arithmetic operations, so that the logic becomes clearer
  and feels less like assembly.

  This also makes it much more obvious what the parameters are, instead
  of only using unsigned char* (which doesn't tell anything about what
  the pointer is used for or the size).

- Similarly, add a new "Point" class and move point functions there.
  Overload the arithmetic operators to make calculations easier to read
2018-05-20 19:59:26 +02:00
e83591f188 ec: Avoid exposing internal function 2018-05-20 19:59:26 +02:00
33c5fd6f5a IOSC: Verify that RSA signature size is correct 2018-05-18 23:12:07 +02:00
964d00447d IOSC: Reuse CertReader for cert imports 2018-05-18 23:12:07 +02:00
90e86fa9a6 ES/Formats: Move sha1 calculation to SignedBlobReader 2018-05-18 22:40:38 +02:00
f82e2f0b92 ES: Fix content check in ImportTitleDone
ImportTitleDone only checks if all required contents have been imported
for system titles.

This fixes the system menu not being able to recreate title directories
to copy a save back to the NAND by using title import functionality.
2018-05-18 20:59:33 +02:00
473cbfa951 ES: Add more logging in title import functions
...to make troubleshooting easier.
2018-05-18 20:59:29 +02:00
73bc20ead4 Use resolver to get default DNS nameserver 2018-05-13 14:05:23 +02:00
5677e5d74a SettingsHandler: Namespace code under the Common namespace
Adds another file in Common to the Common namespace.
2018-05-12 13:39:37 -04:00
968779e623 Merge pull request #6814 from lioncash/sd
SDCardUtil: Minor changes
2018-05-11 12:39:17 -07:00
1b070c4b6f IOS/KD: Migrate to new filesystem interface 2018-05-11 20:30:22 +02:00
3b0139b258 SDCardUtil: Namespace SDCardUtil
Brings yet another header in the common library under the Common
namespace.
2018-05-11 09:19:30 -04:00
e6c489f1d4 ES: Move title dir creation logic into separate function
Since we're going to need it in the boot code, move it out to a
separate, easily reusable function. This also makes the InitImport
logic clearer.
2018-05-10 22:33:49 +02:00
09d2afa91f SettingsHandler: Migrate to new filesystem interface
Change SettingsHandler to take a buffer instead of assuming that the
setting file to read is always on the host filesystem for more
flexibility and make it possible to use the new filesystem interface.
2018-05-10 21:35:27 +02:00
e56387970a Move all UID constants to a single file
Keeps them all next to each other and deduplicates a few constants,
notably the PPC UIDs. Apparently I forgot that I already added them
for SetupStreamKey.
2018-05-09 21:08:24 +02:00
7feabcd096 IOS/FS: Fix rename not handling existing target correctly
The existing backend did not handle cases where the target exists
correctly.

This is a bug that has been around forever but was only recently
exposed when ES started to use our FS code.

Also adds some unit tests to make sure this won't get broken again.
2018-05-08 23:55:13 +02:00
71afe6b4a6 IOS: Make file creation + open more concise
Creating a file then opening it in read write mode is a pretty common
operation. This commit adds a helper function that makes it easier
to read and clearer.
2018-05-08 13:07:30 +02:00
606d25213b ES: Create system directories with correct metadata 2018-05-06 23:19:34 +02:00
f47f916afb ES: Use new filesystem interface in main code 2018-05-06 23:19:34 +02:00
923b450268 ES: Use new filesystem interface in TitleManagement 2018-05-06 23:19:34 +02:00
9ee2654be6 ES: Use new filesystem interface in NandUtils 2018-05-06 23:16:35 +02:00
359a5dcb54 ES: Use new filesystem interface for content handling 2018-05-06 23:16:35 +02:00
3dafc66c36 ESFormats: Migrate to new filesystem interface 2018-05-06 23:16:35 +02:00
5dbf6cd0c9 IOS/FS: Make ConvertResult usable from ES
ES makes extensive use of FS and most of the time returns its error
codes directly.
2018-05-06 22:08:31 +02:00
fb1d075330 IOS/NCD: Migrate to new filesystem interface
A followup for the migration work started in 8317a66
2018-05-06 14:26:51 +02:00
89713c5889 IOS/FS: Add CreateFullPath helper
Analogous to File::CreateFullPath, but for the Wii filesystem so this
ensures that directories and files receive proper attributes.

(This function is technically not part of the FS sysmodule but it's in
an internal FS library that is reused in several IOS sysmodules.)
2018-05-06 14:22:44 +02:00
ffcf107dd2 PowerPC: Make the PowerPCState's msr member variable a UReg_MSR instance
Gets rid of the need to construct UReg_MSR values around the the actual
member in order to query information from it (without using shifts and
masks). This makes it more concise in some areas, while helping with
readability in some other places (such as copying the ILE bit to the LE
bit in the exception checking functions).
2018-05-05 17:59:30 -04:00
d8549d172c Merge pull request #6651 from leoetlino/nand-paths
NandPaths: Return paths that are relative to Wii NAND
2018-05-05 11:01:35 +02:00
983d500d14 Merge pull request #6614 from leoetlino/auto-close
IOS: Do not manually close devices in destructor
2018-05-05 10:53:06 +02:00
8317a66ea5 NandPaths: Return paths that are relative to Wii NAND
Since all FS access will go through the new FS interface (PR #6421)
in order to keep track of metadata properly, there is no need to return
absolute paths anymore.

In fact, returning host paths is a roadblock to using the FS interface.

This starts the migration work by adding a way to get paths that are
relative to the Wii NAND instead of always getting absolute paths
on the host FS.

To prepare for future changes, this commit also makes returned paths
canonical by removing the trailing slash when it's unneeded.

Eventually, once everything has been migrated to the new interface,
we can remove the "from" parameter.
2018-05-04 19:52:17 +02:00
4f427de924 IOS/SO: Clean up variable declarations
Move them closer to their usage and fix the naming.
2018-04-28 11:13:03 +02:00
393663a0a3 IOS/SO: Use an enum for result codes 2018-04-27 23:35:40 +02:00
32d51f1699 IOS/SO: Re-implement GetInterfaceOpt(0x4003)
Use the newly added GetSystemDefaultInterfaceOrFallback() to return
actual information for the default interface, not just dummy
interface details.

This also fixes GetInterfaceOpt(0x4003) and gethostid() returning
inconsistent information. Prior to this change, GetInterfaceOpt(0x4003)
would return 10.0.1.30 and gethostid would give a totally unrelated IP.
2018-04-27 23:35:40 +02:00
3ce271991b IOS/SO: Implement GetSystemDefaultInterface for non-Windows
This fixes gethostid on non-Windows platforms.

Except on Android, where this is left unimplemented because Android
does not support getifaddrs.
2018-04-27 23:35:40 +02:00
25b198cac8 IOS/SO: Move default interface code into a separate function
...so that the function can be more easily reused.
2018-04-27 23:35:40 +02:00
e4276f2983 IOS/SO: Handle invalid GetInterfaceOpt requests 2018-04-27 23:35:40 +02:00
2fcc633c28 Merge pull request #6649 from leoetlino/fs-tests
UnitTests: Add tests for the Wii filesystem
2018-04-20 21:34:06 +02:00
1176ae6512 IOS/FS: Fix ReadDirectory file list copying
Each entry can take up to 13 bytes (including the terminating null
character) but should not be aligned to 13 bytes.
2018-04-20 00:02:32 +02:00
4c47417a0e IOS/FS: Fix ReadDir returning wrong number of entries
ReadDir should always write the actual number of entries in the
directory list (`min(max_count, number_of_entries_on_nand)`).
2018-04-20 00:02:32 +02:00
6224b9bd37 Merge pull request #6642 from leoetlino/stm
IOS/STM: Reset the event hook at the correct time
2018-04-16 09:04:12 -04:00
3355ddcfb3 FileSystem: Fix member destruction order 2018-04-15 14:29:27 +02:00
8bae4b7e51 IOS/STM: Reset the event hook at the correct time
Just re-disassembled STM and found out I have made a mistake when
I changed STM stuff back in 2016.

I accidentally made STM reset the event hook on close when it should
have been done in the destructor (i.e. when IOS gets reset on console).

Verified in IDA that STM just `IOS_ResourceReply(request, IOS_OK)`
without ever resetting the hook.
2018-04-13 23:34:35 +02:00