mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-21 14:03:11 -07:00
PS4 Firmware 8.0 Compatibility (Fix #328)
This commit is contained in:
parent
f1071f31b6
commit
4dac2253df
20 changed files with 1273 additions and 136 deletions
|
@ -72,6 +72,15 @@ CHIAKI_EXPORT const char *chiaki_error_string(ChiakiErrorCode code);
|
|||
CHIAKI_EXPORT void *chiaki_aligned_alloc(size_t alignment, size_t size);
|
||||
CHIAKI_EXPORT void chiaki_aligned_free(void *ptr);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
// values must not change
|
||||
CHIAKI_TARGET_PS4_UNKNOWN = 0,
|
||||
CHIAKI_TARGET_PS4_8 = 800,
|
||||
CHIAKI_TARGET_PS4_9 = 900,
|
||||
CHIAKI_TARGET_PS4_10 = 1000
|
||||
} ChiakiTarget;
|
||||
|
||||
/**
|
||||
* Perform initialization of global state needed for using the Chiaki lib
|
||||
*/
|
||||
|
|
|
@ -33,6 +33,7 @@ extern "C" {
|
|||
|
||||
typedef struct chiaki_regist_info_t
|
||||
{
|
||||
ChiakiTarget target;
|
||||
const char *host;
|
||||
bool broadcast;
|
||||
|
||||
|
@ -94,7 +95,7 @@ CHIAKI_EXPORT void chiaki_regist_stop(ChiakiRegist *regist);
|
|||
/**
|
||||
* @param psn_account_id must be exactly of size CHIAKI_PSN_ACCOUNT_ID_SIZE
|
||||
*/
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_regist_request_payload_format(uint8_t *buf, size_t *buf_size, ChiakiRPCrypt *crypt, const char *psn_online_id, const uint8_t *psn_account_id);
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_regist_request_payload_format(ChiakiTarget target, const uint8_t *ambassador, uint8_t *buf, size_t *buf_size, ChiakiRPCrypt *crypt, const char *psn_online_id, const uint8_t *psn_account_id, uint32_t pin);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -31,15 +31,18 @@ extern "C" {
|
|||
|
||||
typedef struct chiaki_rpcrypt_t
|
||||
{
|
||||
ChiakiTarget target;
|
||||
uint8_t bright[CHIAKI_RPCRYPT_KEY_SIZE];
|
||||
uint8_t ambassador[CHIAKI_RPCRYPT_KEY_SIZE];
|
||||
} ChiakiRPCrypt;
|
||||
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_bright_ambassador(uint8_t *bright, uint8_t *ambassador, const uint8_t *nonce, const uint8_t *morning);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_aeropause(uint8_t *aeropause, const uint8_t *ambassador);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_bright_ambassador(ChiakiTarget target, uint8_t *bright, uint8_t *ambassador, const uint8_t *nonce, const uint8_t *morning);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_aeropause_ps4_pre10(uint8_t *aeropause, const uint8_t *ambassador);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_aeropause(size_t key_1_off, uint8_t *aeropause, const uint8_t *ambassador);
|
||||
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_init_auth(ChiakiRPCrypt *rpcrypt, const uint8_t *nonce, const uint8_t *morning);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_init_regist(ChiakiRPCrypt *rpcrypt, const uint8_t *ambassador, uint32_t pin);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_init_auth(ChiakiRPCrypt *rpcrypt, ChiakiTarget target, const uint8_t *nonce, const uint8_t *morning);
|
||||
CHIAKI_EXPORT void chiaki_rpcrypt_init_regist_ps4_pre10(ChiakiRPCrypt *rpcrypt, const uint8_t *ambassador, uint32_t pin);
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_init_regist(ChiakiRPCrypt *rpcrypt, const uint8_t *ambassador, size_t key_0_off, uint32_t pin);
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_generate_iv(ChiakiRPCrypt *rpcrypt, uint8_t *iv, uint64_t counter);
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_encrypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz);
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_decrypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz);
|
||||
|
|
|
@ -43,22 +43,16 @@ extern "C" {
|
|||
#define CHIAKI_RP_APPLICATION_REASON_IN_USE 0x80108b10
|
||||
#define CHIAKI_RP_APPLICATION_REASON_CRASH 0x80108b15
|
||||
#define CHIAKI_RP_APPLICATION_REASON_RP_VERSION 0x80108b11
|
||||
// unknown: 0x80108bff
|
||||
#define CHIAKI_RP_APPLICATION_REASON_UNKNOWN 0x80108bff
|
||||
|
||||
CHIAKI_EXPORT const char *chiaki_rp_application_reason_string(uint32_t reason);
|
||||
|
||||
typedef enum {
|
||||
CHIAKI_RP_VERSION_UNKNOWN = 0,
|
||||
CHIAKI_RP_VERSION_8_0 = 800,
|
||||
CHIAKI_RP_VERSION_9_0 = 900
|
||||
} ChiakiRpVersion;
|
||||
|
||||
/**
|
||||
* @return RP-Version string or NULL
|
||||
*/
|
||||
CHIAKI_EXPORT const char *chiaki_rp_version_string(ChiakiRpVersion version);
|
||||
CHIAKI_EXPORT const char *chiaki_rp_version_string(ChiakiTarget target);
|
||||
|
||||
CHIAKI_EXPORT ChiakiRpVersion chiaki_rp_version_parse(const char *rp_version_str);
|
||||
CHIAKI_EXPORT ChiakiTarget chiaki_rp_version_parse(const char *rp_version_str);
|
||||
|
||||
|
||||
#define CHIAKI_RP_DID_SIZE 32
|
||||
|
@ -171,7 +165,7 @@ typedef struct chiaki_session_t
|
|||
ChiakiConnectVideoProfile video_profile;
|
||||
} connect_info;
|
||||
|
||||
ChiakiRpVersion rp_version;
|
||||
ChiakiTarget target;
|
||||
|
||||
uint8_t nonce[CHIAKI_RPCRYPT_KEY_SIZE];
|
||||
ChiakiRPCrypt rpcrypt;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue