summaryrefslogtreecommitdiff
path: root/src/core/crypto
AgeCommit message (Collapse)Author
2025-02-28feat: Make firmware mandatory for title launchingZephyron
This commit implements a requirement for firmware to be installed before titles can be launched, similar to how keys are required. Changes include: - Add IsFirmwareAvailable method to KeyManager to check for essential keys - Add CheckFirmwarePresence method to verify actual firmware files (NCAs) - Add firmware checks in game loading process for both desktop and Android - Add error messages when firmware is missing - Add strings for firmware-related error messages The implementation checks for both essential keys and the presence of system applets like Mii Edit and Home Menu to ensure proper firmware is installed. Games will not launch if firmware is missing, and users will be shown an appropriate error message.
2025-02-28feat: Remove autogenerated key functionalityZephyron
This commit removes the functionality that automatically generates and writes keys to *_autogenerated files. The key derivation logic is preserved, but derived keys are now only stored in memory and not written to disk. Changes include: - Remove loading from *_autogenerated key files - Make WriteKeyToFile a no-op function - Remove all file writing operations in SetKey methods - Remove file writing for keyblobs and other derived keys - Update copyright notices This change improves security by not storing derived keys on disk and simplifies the key management system.
2025-02-16build: upgrade fmt and SDL2Zephyron
Update fmt library to version 11.0.2 and make necessary adjustments: - Replace fmt/format.h includes with fmt/ranges.h - Add const qualifiers to formatter::format functions - Update CMake to require fmt version 11 Additional dependency updates: - Update SDL2 bundled version from 2.28.2 to 2.32.0 - Update catch2 to version 3.8.0 - Update vcpkg baseline to c82f74667287d3dc386bce81e44964370c91a289
2025-01-14Revert incorrect copyright attribution for non-contributed filesZephyron
- In commit b3facaa6bb30cdc39f2b7d632fef1e3bfeee7785, the copyright header was updated to include "Citron Homebrew Project" across multiple files, regardless of whether any contributions were made. - This commit removes the incorrect attribution and reverts the copyright header to its previous state. - Copyright attribution should only be added when meaningful contributions have been made to the file. - This commit ensures proper compliance with copyright standards and maintains correct attribution to the respective contributors. - Special thanks to Tachi for pointing out the need for these corrections and ensuring that proper attribution practices are followed.
2024-12-31chore: update project references and add Citron copyrightZephyron
- Replaced all references to the old project name with Citron. - Added Citron copyright information alongside existing notices in all files.
2024-01-25vfs: Move vfs files to their own directoryFearlessTobi
2023-09-13key_manager: Remove uncaught usage of stoullat9nq
2023-09-05core: Add support for loading NSPs with personalized tickets. (#10048)Steveice10
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2023-06-03android: frontend: Integrate key installation for SAF.bunnei
2023-06-03core: crypto: key_manager: Add methods to reload & validate keys.bunnei
2023-03-12general: fix spelling mistakesLiam
2022-11-27crypto: use user-provided keys whenever possibleValeri
Solves an issue where autogenerated title keys would take precedence over those provided by user.
2022-06-13common: Change semantics of UNREACHABLE to unconditionally crashLiam
2022-04-23general: Convert source file copyright comments over to SPDXMorph
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2021-11-03core: Fix transitive include build errorsameerj
2021-11-03core: Remove unused includesameerj
2021-06-23General: Resolve fmt specifiers to adhere to 8.0.0 API where applicableLioncash
Also removes some deprecated API usages.
2021-05-25common: fs: Rework the Common Filesystem interface to make use of ↵Morph
std::filesystem (#6270) * common: fs: fs_types: Create filesystem types Contains various filesystem types used by the Common::FS library * common: fs: fs_util: Add std::string to std::u8string conversion utility * common: fs: path_util: Add utlity functions for paths Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library * common: fs: file: Rewrite the IOFile implementation * common: fs: Reimplement Common::FS library using std::filesystem * common: fs: fs_paths: Add fs_paths to replace common_paths * common: fs: path_util: Add the rest of the path functions * common: Remove the previous Common::FS implementation * general: Remove unused fs includes * string_util: Remove unused function and include * nvidia_flags: Migrate to the new Common::FS library * settings: Migrate to the new Common::FS library * logging: backend: Migrate to the new Common::FS library * core: Migrate to the new Common::FS library * perf_stats: Migrate to the new Common::FS library * reporter: Migrate to the new Common::FS library * telemetry_session: Migrate to the new Common::FS library * key_manager: Migrate to the new Common::FS library * bis_factory: Migrate to the new Common::FS library * registered_cache: Migrate to the new Common::FS library * xts_archive: Migrate to the new Common::FS library * service: acc: Migrate to the new Common::FS library * applets/profile: Migrate to the new Common::FS library * applets/web: Migrate to the new Common::FS library * service: filesystem: Migrate to the new Common::FS library * loader: Migrate to the new Common::FS library * gl_shader_disk_cache: Migrate to the new Common::FS library * nsight_aftermath_tracker: Migrate to the new Common::FS library * vulkan_library: Migrate to the new Common::FS library * configure_debug: Migrate to the new Common::FS library * game_list_worker: Migrate to the new Common::FS library * config: Migrate to the new Common::FS library * configure_filesystem: Migrate to the new Common::FS library * configure_per_game_addons: Migrate to the new Common::FS library * configure_profile_manager: Migrate to the new Common::FS library * configure_ui: Migrate to the new Common::FS library * input_profiles: Migrate to the new Common::FS library * yuzu_cmd: config: Migrate to the new Common::FS library * yuzu_cmd: Migrate to the new Common::FS library * vfs_real: Migrate to the new Common::FS library * vfs: Migrate to the new Common::FS library * vfs_libzip: Migrate to the new Common::FS library * service: bcat: Migrate to the new Common::FS library * yuzu: main: Migrate to the new Common::FS library * vfs_real: Delete the contents of an existing file in CreateFile Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now. * input_profiles: Don't iterate the input profile dir if it does not exist Silences an error produced in the log if the directory does not exist. * game_list_worker: Skip parsing file if the returned VfsFile is nullptr Prevents crashes in GetLoader when the virtual file is nullptr * common: fs: Validate paths for path length * service: filesystem: Open the mod load directory as read only
2021-05-16core: Make variable shadowing a compile-time errorLioncash
Now that we have most of core free of shadowing, we can enable the warning as an error to catch anything that may be remaining and also eliminate this class of logic bug entirely.
2021-04-23aes_util: Make use of std::spanLioncash
Allows us to simplify the interface quite a bit as it will handle contiguous sequences for us.
2021-04-14common: Move settings to common from core.bunnei
- Removes a dependency on core and input_common from common.
2021-03-05aes_util: Remove malformed mbedtls_cipher_finish function callMorph
2021-02-04key_manager: Create the keys directory if it does not existMorph
2021-01-05core: Silence warnings when compiling without assertsReinUsesLisp
2020-10-20Revert "core: Fix clang build"bunnei
2020-10-17core: Fix clang buildLioncash
Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
2020-10-13core/CMakeLists: Make some warnings errorsLioncash
Makes our error coverage a little more consistent across the board by applying it to Linux side of things as well. This also makes it more consistent with the warning settings in other libraries in the project. This also updates httplib to 0.7.9, as there are several warning cleanups made that allow us to enable several warnings as errors.
2020-09-14crypto/key_manager: Remove dependency on the global system accessorLioncash
We can supply the content provider as an argument instead of hardcoding a global accessor in the implementation.
2020-09-02Merge pull request #4564 from lioncash/file-includebunnei
file_sys: Replace inclusions with forward declarations where applicable
2020-08-23file_sys: Replace inclusions with forward declarations where applicableLioncash
Same behavior, minus unnecessary inclusions where not necessary.
2020-08-22key_manager: Make data arrays constexprLioncash
We can convert these maps into constexpr arrays to eliminate some runtime static constructors.
2020-08-17Merge pull request #4535 from lioncash/fileutilbunnei
common/fileutil: Convert namespace to Common::FS
2020-08-17Merge pull request #4494 from lioncash/transcodebunnei
aes_util: Make use of non-template variant of Transcode
2020-08-16common/fileutil: Convert namespace to Common::FSLioncash
Migrates a remaining common file over to the Common namespace, making it consistent with the rest of common files. This also allows for high-traffic FS related code to alias the filesystem function namespace as namespace FS = Common::FS; for more concise typing.
2020-08-06Merge pull request #4483 from lioncash/constexpr-hexbunnei
partition_data_manager: Make data arrays constexpr
2020-08-06partition_data_manager: Update master key hashesLioncash
Fills in some hashes that were previously unhandled.
2020-08-06partition_data_manager: Make data arrays constexprLioncash
Previously the constructor for all of these would run at program startup, consuming time before the application can enter main(). This is also particularly dangerous, given the logging system wouldn't have been initialized properly yet, yet the program would use the logs to signify an error. To rectify this, we can replace the literals with constexpr functions that perform the conversion at compile-time, completely eliminating the runtime cost of initializing these arrays.
2020-08-06partition_data_manager: Eliminate magic valueLioncash
We can use sizeof to make it obvious at the call site where the value is coming from.
2020-08-06aes_util: Make use of non-template variant of TranscodeLioncash
Same behavior, less template instantiations.
2020-08-03aes_util: Allow SetIV to be non-allocatingLioncash
In a few places, the data to be set as the IV is already within an array. We shouldn't require this data to be heap-allocated if it doesn't need to be. This allows certain callers to reduce heap churn.
2020-07-10KeyManager: Prevent writing of invalid keysMorph
If the keys are zero, don't write them to the autogenerated file.
2020-07-01key_manager: Correct casing of instance()Lioncash
Our codebase uppercases member function names.
2020-07-01key_manager: Delete move operationsLioncash
Prevents the singleton from being moved from.
2020-07-01key_manager: Make use of canonical deleted operator=Lioncash
operator= typically returns a reference, it's not void. While we're at it, we can correct the parameter formatting to adhere to the codebase.
2020-05-20crypto: Make KeyManager a singleton classFearlessTobi
Previously, we were reading the keys everytime a KeyManager object was created, causing yuzu to reread the keys file multiple hundreds of times when loading the game list. With this change, it is only loaded once. On my system, this decreased game list loading times by a factor of 20.
2020-04-23Merge pull request #3697 from lioncash/declarationsbunnei
CMakeLists: Enable -Wmissing-declarations on Linux builds
2020-04-16General: Resolve warnings related to missing declarationsLioncash
2020-04-16key_manager: Resolve missing field initializer warningLioncash
2019-11-15Merge pull request #3091 from lioncash/core-conversionbunnei
core: Make most implicit type conversion warnings errors on MSVC
2019-11-14Merge pull request #3093 from lioncash/mbedtlsbunnei
core: Migrate off deprecated mbedtls functions