Merge pull request #1085 from lioncash/namespace
common: Namespace hex_util.h/.cpp
This commit is contained in:
		
						commit
						3fd78f4d24
					
				@ -4,6 +4,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "common/hex_util.h"
 | 
					#include "common/hex_util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Common {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u8 ToHexNibble(char c1) {
 | 
					u8 ToHexNibble(char c1) {
 | 
				
			||||||
    if (c1 >= 65 && c1 <= 70)
 | 
					    if (c1 >= 65 && c1 <= 70)
 | 
				
			||||||
        return c1 - 55;
 | 
					        return c1 - 55;
 | 
				
			||||||
@ -25,3 +27,5 @@ std::array<u8, 32> operator""_array32(const char* str, size_t len) {
 | 
				
			|||||||
        throw std::logic_error("Not of correct size.");
 | 
					        throw std::logic_error("Not of correct size.");
 | 
				
			||||||
    return HexStringToArray<32>(str);
 | 
					    return HexStringToArray<32>(str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace Common
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,8 @@
 | 
				
			|||||||
#include <fmt/format.h>
 | 
					#include <fmt/format.h>
 | 
				
			||||||
#include "common/common_types.h"
 | 
					#include "common/common_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Common {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u8 ToHexNibble(char c1);
 | 
					u8 ToHexNibble(char c1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <size_t Size, bool le = false>
 | 
					template <size_t Size, bool le = false>
 | 
				
			||||||
@ -35,3 +37,5 @@ std::string HexArrayToString(std::array<u8, Size> array, bool upper = true) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
std::array<u8, 0x10> operator"" _array16(const char* str, size_t len);
 | 
					std::array<u8, 0x10> operator"" _array16(const char* str, size_t len);
 | 
				
			||||||
std::array<u8, 0x20> operator"" _array32(const char* str, size_t len);
 | 
					std::array<u8, 0x20> operator"" _array32(const char* str, size_t len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace Common
 | 
				
			||||||
 | 
				
			|||||||
@ -52,20 +52,20 @@ void KeyManager::LoadFromFile(const std::string& filename, bool is_title_keys) {
 | 
				
			|||||||
        out[1].erase(std::remove(out[1].begin(), out[1].end(), ' '), out[1].end());
 | 
					        out[1].erase(std::remove(out[1].begin(), out[1].end(), ' '), out[1].end());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (is_title_keys) {
 | 
					        if (is_title_keys) {
 | 
				
			||||||
            auto rights_id_raw = HexStringToArray<16>(out[0]);
 | 
					            auto rights_id_raw = Common::HexStringToArray<16>(out[0]);
 | 
				
			||||||
            u128 rights_id{};
 | 
					            u128 rights_id{};
 | 
				
			||||||
            std::memcpy(rights_id.data(), rights_id_raw.data(), rights_id_raw.size());
 | 
					            std::memcpy(rights_id.data(), rights_id_raw.data(), rights_id_raw.size());
 | 
				
			||||||
            Key128 key = HexStringToArray<16>(out[1]);
 | 
					            Key128 key = Common::HexStringToArray<16>(out[1]);
 | 
				
			||||||
            SetKey(S128KeyType::Titlekey, key, rights_id[1], rights_id[0]);
 | 
					            SetKey(S128KeyType::Titlekey, key, rights_id[1], rights_id[0]);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            std::transform(out[0].begin(), out[0].end(), out[0].begin(), ::tolower);
 | 
					            std::transform(out[0].begin(), out[0].end(), out[0].begin(), ::tolower);
 | 
				
			||||||
            if (s128_file_id.find(out[0]) != s128_file_id.end()) {
 | 
					            if (s128_file_id.find(out[0]) != s128_file_id.end()) {
 | 
				
			||||||
                const auto index = s128_file_id.at(out[0]);
 | 
					                const auto index = s128_file_id.at(out[0]);
 | 
				
			||||||
                Key128 key = HexStringToArray<16>(out[1]);
 | 
					                Key128 key = Common::HexStringToArray<16>(out[1]);
 | 
				
			||||||
                SetKey(index.type, key, index.field1, index.field2);
 | 
					                SetKey(index.type, key, index.field1, index.field2);
 | 
				
			||||||
            } else if (s256_file_id.find(out[0]) != s256_file_id.end()) {
 | 
					            } else if (s256_file_id.find(out[0]) != s256_file_id.end()) {
 | 
				
			||||||
                const auto index = s256_file_id.at(out[0]);
 | 
					                const auto index = s256_file_id.at(out[0]);
 | 
				
			||||||
                Key256 key = HexStringToArray<32>(out[1]);
 | 
					                Key256 key = Common::HexStringToArray<32>(out[1]);
 | 
				
			||||||
                SetKey(index.type, key, index.field1, index.field2);
 | 
					                SetKey(index.type, key, index.field1, index.field2);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -37,11 +37,12 @@ static bool FollowsNcaIdFormat(std::string_view name) {
 | 
				
			|||||||
static std::string GetRelativePathFromNcaID(const std::array<u8, 16>& nca_id, bool second_hex_upper,
 | 
					static std::string GetRelativePathFromNcaID(const std::array<u8, 16>& nca_id, bool second_hex_upper,
 | 
				
			||||||
                                            bool within_two_digit) {
 | 
					                                            bool within_two_digit) {
 | 
				
			||||||
    if (!within_two_digit)
 | 
					    if (!within_two_digit)
 | 
				
			||||||
        return fmt::format("/{}.nca", HexArrayToString(nca_id, second_hex_upper));
 | 
					        return fmt::format("/{}.nca", Common::HexArrayToString(nca_id, second_hex_upper));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Core::Crypto::SHA256Hash hash{};
 | 
					    Core::Crypto::SHA256Hash hash{};
 | 
				
			||||||
    mbedtls_sha256(nca_id.data(), nca_id.size(), hash.data(), 0);
 | 
					    mbedtls_sha256(nca_id.data(), nca_id.size(), hash.data(), 0);
 | 
				
			||||||
    return fmt::format("/000000{:02X}/{}.nca", hash[0], HexArrayToString(nca_id, second_hex_upper));
 | 
					    return fmt::format("/000000{:02X}/{}.nca", hash[0],
 | 
				
			||||||
 | 
					                       Common::HexArrayToString(nca_id, second_hex_upper));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static std::string GetCNMTName(TitleType type, u64 title_id) {
 | 
					static std::string GetCNMTName(TitleType type, u64 title_id) {
 | 
				
			||||||
@ -170,7 +171,7 @@ std::vector<NcaID> RegisteredCache::AccumulateFiles() const {
 | 
				
			|||||||
    std::vector<NcaID> ids;
 | 
					    std::vector<NcaID> ids;
 | 
				
			||||||
    for (const auto& d2_dir : dir->GetSubdirectories()) {
 | 
					    for (const auto& d2_dir : dir->GetSubdirectories()) {
 | 
				
			||||||
        if (FollowsNcaIdFormat(d2_dir->GetName())) {
 | 
					        if (FollowsNcaIdFormat(d2_dir->GetName())) {
 | 
				
			||||||
            ids.push_back(HexStringToArray<0x10, true>(d2_dir->GetName().substr(0, 0x20)));
 | 
					            ids.push_back(Common::HexStringToArray<0x10, true>(d2_dir->GetName().substr(0, 0x20)));
 | 
				
			||||||
            continue;
 | 
					            continue;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -181,20 +182,21 @@ std::vector<NcaID> RegisteredCache::AccumulateFiles() const {
 | 
				
			|||||||
            if (!FollowsNcaIdFormat(nca_dir->GetName()))
 | 
					            if (!FollowsNcaIdFormat(nca_dir->GetName()))
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ids.push_back(HexStringToArray<0x10, true>(nca_dir->GetName().substr(0, 0x20)));
 | 
					            ids.push_back(Common::HexStringToArray<0x10, true>(nca_dir->GetName().substr(0, 0x20)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (const auto& nca_file : d2_dir->GetFiles()) {
 | 
					        for (const auto& nca_file : d2_dir->GetFiles()) {
 | 
				
			||||||
            if (!FollowsNcaIdFormat(nca_file->GetName()))
 | 
					            if (!FollowsNcaIdFormat(nca_file->GetName()))
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ids.push_back(HexStringToArray<0x10, true>(nca_file->GetName().substr(0, 0x20)));
 | 
					            ids.push_back(
 | 
				
			||||||
 | 
					                Common::HexStringToArray<0x10, true>(nca_file->GetName().substr(0, 0x20)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (const auto& d2_file : dir->GetFiles()) {
 | 
					    for (const auto& d2_file : dir->GetFiles()) {
 | 
				
			||||||
        if (FollowsNcaIdFormat(d2_file->GetName()))
 | 
					        if (FollowsNcaIdFormat(d2_file->GetName()))
 | 
				
			||||||
            ids.push_back(HexStringToArray<0x10, true>(d2_file->GetName().substr(0, 0x20)));
 | 
					            ids.push_back(Common::HexStringToArray<0x10, true>(d2_file->GetName().substr(0, 0x20)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return ids;
 | 
					    return ids;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -339,7 +341,7 @@ std::vector<RegisteredCacheEntry> RegisteredCache::ListEntriesFilter(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static std::shared_ptr<NCA> GetNCAFromXCIForID(std::shared_ptr<XCI> xci, const NcaID& id) {
 | 
					static std::shared_ptr<NCA> GetNCAFromXCIForID(std::shared_ptr<XCI> xci, const NcaID& id) {
 | 
				
			||||||
    const auto filename = fmt::format("{}.nca", HexArrayToString(id, false));
 | 
					    const auto filename = fmt::format("{}.nca", Common::HexArrayToString(id, false));
 | 
				
			||||||
    const auto iter =
 | 
					    const auto iter =
 | 
				
			||||||
        std::find_if(xci->GetNCAs().begin(), xci->GetNCAs().end(),
 | 
					        std::find_if(xci->GetNCAs().begin(), xci->GetNCAs().end(),
 | 
				
			||||||
                     [&filename](std::shared_ptr<NCA> nca) { return nca->GetName() == filename; });
 | 
					                     [&filename](std::shared_ptr<NCA> nca) { return nca->GetName() == filename; });
 | 
				
			||||||
@ -361,7 +363,7 @@ InstallResult RegisteredCache::InstallEntry(std::shared_ptr<XCI> xci, bool overw
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Install Metadata File
 | 
					    // Install Metadata File
 | 
				
			||||||
    const auto meta_id_raw = (*meta_iter)->GetName().substr(0, 32);
 | 
					    const auto meta_id_raw = (*meta_iter)->GetName().substr(0, 32);
 | 
				
			||||||
    const auto meta_id = HexStringToArray<16>(meta_id_raw);
 | 
					    const auto meta_id = Common::HexStringToArray<16>(meta_id_raw);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const auto res = RawInstallNCA(*meta_iter, copy, overwrite_if_exists, meta_id);
 | 
					    const auto res = RawInstallNCA(*meta_iter, copy, overwrite_if_exists, meta_id);
 | 
				
			||||||
    if (res != InstallResult::Success)
 | 
					    if (res != InstallResult::Success)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user