Pull Request #17543: review fixes
Some checks are pending
Generate Translation Template / Generate Translation Template (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux-aarch64.sh, gcc, rpcs3/rpcs3-ci-jammy-aarch64:1.6, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.6, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1, rpcs3/rpcs3-binaries-linux-arm64, /rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.6, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (d812f1254a1157c80fd402f94446310560f54e5f, rpcs3/rpcs3-binaries-linux, /rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.6, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (51ae32f468089a8169aaf1567de355ff4a3e0842, rpcs3/rpcs3-binaries-mac, .ci/build-mac.sh, Intel) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (8e21bdbc40711a3fccd18fbf17b742348b0f4281, rpcs3/rpcs3-binaries-mac-arm64, .ci/build-mac-arm64.sh, Apple Silicon) (push) Waiting to run
Build RPCS3 / RPCS3 Windows (push) Waiting to run
Build RPCS3 / RPCS3 Windows Clang (win64, clang, clang64) (push) Waiting to run
Build RPCS3 / RPCS3 FreeBSD (push) Waiting to run

This commit is contained in:
Elad 2025-10-04 14:55:35 +03:00
parent 86b7ccef93
commit 274fec7bd0
3 changed files with 22 additions and 8 deletions

View file

@ -206,11 +206,14 @@ error_code sys_ss_get_console_id(vm::ptr<u8> buf)
return sys_ss_appliance_info_manager(0x19003, buf);
}
error_code sys_ss_get_open_psid(vm::ptr<u128> psid)
error_code sys_ss_get_open_psid(vm::ptr<CellSsOpenPSID> psid)
{
sys_ss.notice("sys_ss_get_open_psid(psid=*0x%x)", psid);
*psid = g_cfg.sys.console_psid.get();
const u128 configured_psid = g_cfg.sys.console_psid.get();
psid->high = static_cast<u64>(configured_psid >> 64);
psid->low = static_cast<u64>(configured_psid);
return CELL_OK;
}

View file

@ -13,10 +13,16 @@ enum sys_ss_rng_error : u32
SYS_SS_RTC_ERROR_UNK = 0x8001050f,
};
struct CellSsOpenPSID
{
be_t<u64> high;
be_t<u64> low;
};
error_code sys_ss_random_number_generator(u64 pkg_id, vm::ptr<void> buf, u64 size);
error_code sys_ss_access_control_engine(u64 pkg_id, u64 a2, u64 a3);
error_code sys_ss_get_console_id(vm::ptr<u8> buf);
error_code sys_ss_get_open_psid(vm::ptr<u128> psid);
error_code sys_ss_get_open_psid(vm::ptr<CellSsOpenPSID> psid);
error_code sys_ss_appliance_info_manager(u32 code, vm::ptr<u8> buffer);
error_code sys_ss_get_cache_of_product_mode(vm::ptr<u8> ptr);
error_code sys_ss_secure_rtc(u64 cmd, u64 a2, u64 a3, u64 a4);

View file

@ -21,10 +21,15 @@ std::string cfg_root::node_sys::get_random_system_name()
u128 cfg_root::node_sys::get_random_psid()
{
std::random_device rnd;
std::mt19937_64 prng(rnd());
std::uniform_int_distribution<u64> uniformDist;
u128 result = uniformDist(prng);
result += u128{uniformDist(prng)} << 64;
// Generate seed for each 32-bits for maximum entropy using Standard Library
std::uniform_int_distribution<u32> uniform_dist;
std::mt19937 prng;
u128 result{};
prng.seed(std::random_device()()), result += u128{uniform_dist(prng)} << 0;
prng.seed(std::random_device()()), result += u128{uniform_dist(prng)} << 32;
prng.seed(std::random_device()()), result += u128{uniform_dist(prng)} << 64;
prng.seed(std::random_device()()), result += u128{uniform_dist(prng)} << 96;
return result;
}