3d9df49619
partition_data_manager: Move IV data to where it's needed in DecryptPackage2()
...
Given it's only used in one spot and has a fairly generic name, we can
just specify it directly in the function call. This also the benefit of
automatically moving it.
2018-10-13 09:20:21 -04:00
bc2196bb09
partition_data_manager: Remove commented out code
...
Commented out code shouldn't be left in without a reason indicating why
in a comment.
2018-10-13 09:17:02 -04:00
6da2ed4232
key_manager/partition_data_manager: Silence truncation compiler warnings
2018-10-13 09:13:19 -04:00
f56a8da46a
partition_data_manager: Dehardcode array bounds
...
Instead, we can make it part of the type and make named variables for
them, so they only require one definition (and if they ever change for
whatever reason, they only need to be changed in one spot).
2018-10-13 08:52:37 -04:00
d257a3b56c
partition_data_manager: Take VirtualFile by const reference in constructor
...
Given the VirtualFile instance isn't stored into the class as a data
member, or written to, this can just be turned into a const reference,
as the constructor doesn't need to make a copy of it.
2018-10-13 08:39:05 -04:00
e96d69c328
partition_data_manager: Amend constructor initializer list order
...
Orders the members in the exact order they would be initialized. This
also prevents compiler warnings about this sort of thing.
2018-10-13 08:36:26 -04:00
aaca7543f0
partition_data_manager: Remove unused includes
...
Gets unused includes out of the headers and moves them into the cpp file
if they're used there instead.
2018-10-13 08:33:49 -04:00
06898263f6
key_manager: Use std::vector's insert() instead of std::copy with a back_inserter
...
If the data is unconditionally being appended to the back of a
std::vector, we can just directly insert it there without the need to
insert all of the elements one-by-one with a std::back_inserter.
2018-10-13 08:29:35 -04:00
e70c08b543
key_manager: Brace long conditional body
...
If a conditional (or it's body) travels more than one line, it should be
braced.
2018-10-13 08:24:21 -04:00
ef5639bfbb
key_manager: Don't assume file seeks and reads will always succeed
...
Given the filesystem should always be assumed to be volatile, we should
check and bail out if a seek operation isn't successful. This'll prevent
potentially writing/returning garbage data from the function in rare
cases.
This also allows removing a check to see if an offset is within the
bounds of a file before perfoming a seek operation. If a seek is
attempted beyond the end of a file, it will fail, so this essentially
combines two checks into one in one place.
2018-10-13 08:24:18 -04:00
82ea1cf35a
key_manager: Remove unnecessary seek in DeriveSDSeed()
...
Given the file is opened a few lines above and no operations are done,
other than check if the file is in a valid state, the read/write pointer
will always be at the beginning of the file.
2018-10-13 08:08:44 -04:00
3ec054643e
partition_data_manager: Rename system files for hekate
...
x
2018-10-07 13:16:23 -04:00
29dc6f4519
crypto: Add PartitionDataManager
...
Keeps track of system files for key derivation
2018-10-07 13:15:11 -04:00
4aad010f7a
key_manager: Add support for loading keys from partition data
2018-10-07 13:15:11 -04:00
d041d6231c
key_manager: Add ETicket key derivation
...
Derives titlekeys
2018-10-07 13:15:11 -04:00
a57aac5772
key_manager: Add base key derivation
...
Derives master keys, game encryption keys, and package1/2 keys
2018-10-07 13:15:11 -04:00
d7398283e3
key_manager: Add BIS key getter
2018-10-07 13:15:11 -04:00
d6a0d5d432
key_manager: Add support for more keys
...
TSEC, SBK, BIS, and other Sources for proper derivation
2018-10-07 13:15:11 -04:00
c79d2ca6cf
key_manager: Add keyblob support
2018-10-07 13:15:11 -04:00
e4602748d6
key_manager: Add support for crypto revisions past 04
2018-10-07 13:15:11 -04:00
9e34303fb9
key_manager: Add support for comments in keyfiles
2018-10-07 13:15:11 -04:00
ce05df0a6d
key_manager: Add support for console-specific keyfile
2018-10-07 13:15:11 -04:00
721632fe66
key_manager: Rename KEK to Kek
2018-10-07 13:15:11 -04:00
63c2e32e20
Port #4182 from Citra: "Prefix all size_t with std::"
2018-09-15 15:21:06 +02:00
d2caf4af7d
game_list: Use RegisteredCacheUnion for installed
...
Reduces code
2018-09-04 16:21:40 -04:00
99fbcb3bf2
aes_util: Fix error involving reads of less than 0x10
...
Issues with block size are fixed by making all reads minimum length of 0x10
2018-09-04 16:21:40 -04:00
e4e55d064e
nsp: Comply with style and performance guidelines
2018-09-04 14:29:19 -04:00
5c8aff984e
card_image: Parse XCI secure partition with NSP
...
Eliminated duplicate code and adds support for Rev1+ carts
2018-09-04 14:27:33 -04:00
d770c60205
key_manager: Avoid autogeneration if key exists
2018-09-04 14:25:54 -04:00
a813c10e1c
file_sys: Replace includes with forward declarations where applicable
...
Cuts down on include dependencies, resulting in less files that need to
be rebuilt when certain things are changed.
2018-09-03 22:52:24 -04:00
6314a799aa
file_sys/crypto: Fix missing/unnecessary includes
2018-08-24 22:15:32 -04:00
ccfd176382
key_manager: Eliminate indexed for loop
2018-08-23 11:53:30 -04:00
119ab308b5
key_manager: Create keys dir if it dosen't exist
...
On call to WriteKeyToFile, so that the autogenerated file can be written.
2018-08-23 11:53:30 -04:00
a7e8d10969
file_sys: Cut down on includes and copies
2018-08-23 11:53:30 -04:00
42dc856ce1
crypto: Eliminate magic constants
2018-08-23 11:53:30 -04:00
61a5b56abd
key_manager: Add support for autogenerated keys
...
Stored in a separate file than manual keys.
2018-08-23 11:53:30 -04:00
f26fc64cb4
key_manager: Add support for KEK and SD seed derivation
2018-08-23 11:53:30 -04:00
cde665c565
key_manager: Switch to boost flat_map for keys
...
Should make key gets marginally faster.
2018-08-23 11:53:30 -04:00
c4845df3d4
xts_encryption_layer: Implement XTSEncryptionLayer
2018-08-23 11:52:44 -04:00
10e5356e9a
aes_util: Make XTSTranscode stricter about sizes
...
XTS with Nintendo Tweak will fail mysteriously if the sector size is not 0x4000. Upgrade the critical log to an assert to prevent undefined behavior.
2018-08-23 11:52:44 -04:00
6dd369ab88
ctr_encryption_layer: Fix bug when transcoding small data
...
Fixes a bug where data lengths of less than size 0x10 will fail or have misleading return values.
2018-08-23 11:52:44 -04:00
b39cd70cd4
common: Namespace hex_util.h/.cpp
...
It's in the common code, so it should be under the Common namespace like
everything else.
2018-08-15 23:24:00 -04:00
a27ec24c0f
crypto: Remove hex utilities from key_manager
...
Move to hex_util.h in common
2018-08-11 22:50:08 -04:00
0d04ee97dc
aes_util: Add static assertion to Transcode() and XTSTranscode() to ensure well-defined behavior
...
These functions should only be given trivially-copyable types.
2018-08-04 17:30:52 -04:00
64c8212ae1
aes_util: Make CalculateNintendoTweak() an internally linked function
...
This function doesn't directly depend on class state, so it can be
hidden entirely from the interface in the cpp file.
2018-08-04 17:30:48 -04:00
b25468b498
aes_util: Make Transcode() a const member function
...
This doesn't modify member state, so it can be made const.
2018-08-04 16:49:42 -04:00
8da651ac4d
core/crypto: Remove unnecessary includes
2018-08-04 16:44:07 -04:00
c1f76abfaf
key_manager: Use regular std::string instead of std::string_view
...
The benefit of std::string_view comes from the idea of avoiding copies
(essentially acting as a non-owning view), however if we're just going
to copy into a local variable immediately, there's not much benefit
gained here.
2018-08-04 16:37:30 -04:00
187d8e215f
Use more descriptive error codes and messages
2018-08-01 00:16:54 -04:00
9d59b96ef9
Use static const instead of const static
2018-08-01 00:16:54 -04:00