mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	service/cfg: Make GenerateConsoleUniqueId() return a pair (#5321)
Same behavior, but allows the use of structured bindings.
This commit is contained in:
		
							parent
							
								
									41abdb505c
								
							
						
					
					
						commit
						30414eeb4b
					
				
					 3 changed files with 17 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -465,9 +465,7 @@ ResultCode Module::FormatConfig() {
 | 
			
		|||
    if (!res.IsSuccess())
 | 
			
		||||
        return res;
 | 
			
		||||
 | 
			
		||||
    u32 random_number;
 | 
			
		||||
    u64 console_id;
 | 
			
		||||
    GenerateConsoleUniqueId(random_number, console_id);
 | 
			
		||||
    const auto [random_number, console_id] = GenerateConsoleUniqueId();
 | 
			
		||||
 | 
			
		||||
    u64_le console_id_le = console_id;
 | 
			
		||||
    res = CreateConfigInfoBlk(ConsoleUniqueID1BlockID, sizeof(console_id_le), 0xE, &console_id_le);
 | 
			
		||||
| 
						 | 
				
			
			@ -727,13 +725,18 @@ u8 Module::GetCountryCode() {
 | 
			
		|||
    return block.country_code;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::GenerateConsoleUniqueId(u32& random_number, u64& console_id) {
 | 
			
		||||
std::pair<u32, u64> Module::GenerateConsoleUniqueId() const {
 | 
			
		||||
    CryptoPP::AutoSeededRandomPool rng;
 | 
			
		||||
    random_number = rng.GenerateWord32(0, 0xFFFF);
 | 
			
		||||
    const u32 random_number = rng.GenerateWord32(0, 0xFFFF);
 | 
			
		||||
 | 
			
		||||
    u64_le local_friend_code_seed;
 | 
			
		||||
    rng.GenerateBlock(reinterpret_cast<CryptoPP::byte*>(&local_friend_code_seed),
 | 
			
		||||
                      sizeof(local_friend_code_seed));
 | 
			
		||||
    console_id = (local_friend_code_seed & 0x3FFFFFFFF) | (static_cast<u64>(random_number) << 48);
 | 
			
		||||
 | 
			
		||||
    const u64 console_id =
 | 
			
		||||
        (local_friend_code_seed & 0x3FFFFFFFF) | (static_cast<u64>(random_number) << 48);
 | 
			
		||||
 | 
			
		||||
    return std::make_pair(random_number, console_id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode Module::SetConsoleUniqueId(u32 random_number, u64 console_id) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
#include <array>
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <utility>
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -383,12 +384,13 @@ public:
 | 
			
		|||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a new random console unique id.
 | 
			
		||||
     * @param random_number a random generated 16bit number stored at 0x90002, used for generating
 | 
			
		||||
     * the
 | 
			
		||||
     * console_id
 | 
			
		||||
     * @param console_id the randomly created console id
 | 
			
		||||
     *
 | 
			
		||||
     * @returns A pair containing a random number and a random console ID.
 | 
			
		||||
     *
 | 
			
		||||
     * @note The random number is a random generated 16bit number stored at 0x90002, used for
 | 
			
		||||
     *       generating the console ID.
 | 
			
		||||
     */
 | 
			
		||||
    void GenerateConsoleUniqueId(u32& random_number, u64& console_id);
 | 
			
		||||
    std::pair<u32, u64> GenerateConsoleUniqueId() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets the random_number and the  console unique id in the config savegame.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue