diff options
| author | 2019-04-10 14:07:00 -0400 | |
|---|---|---|
| committer | 2019-07-07 21:38:33 -0400 | |
| commit | 44b0c19f6a0a9491028800ca0a10dc74c954b258 (patch) | |
| tree | 7843ba3b6557c77b5e61f1b4a170f2dc99724c27 /src | |
| parent | es: Implement ETicket GetCommonTicketSize (14) (diff) | |
| download | yuzu-44b0c19f6a0a9491028800ca0a10dc74c954b258.tar.gz yuzu-44b0c19f6a0a9491028800ca0a10dc74c954b258.tar.xz yuzu-44b0c19f6a0a9491028800ca0a10dc74c954b258.zip | |
es: Implement ETicket GetPersonalizedTicketSize (15)
Returns the size of the buffer needed to hold the personal ticket associated with the rights ID.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/es/es.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index 0125b3ba9..e18f27e7a 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp | |||
| @@ -30,7 +30,7 @@ public: | |||
| 30 | {12, &ETicket::ListPersonalizedTicket, "ListPersonalizedTicket"}, | 30 | {12, &ETicket::ListPersonalizedTicket, "ListPersonalizedTicket"}, |
| 31 | {13, nullptr, "ListMissingPersonalizedTicket"}, | 31 | {13, nullptr, "ListMissingPersonalizedTicket"}, |
| 32 | {14, &ETicket::GetCommonTicketSize, "GetCommonTicketSize"}, | 32 | {14, &ETicket::GetCommonTicketSize, "GetCommonTicketSize"}, |
| 33 | {15, nullptr, "GetPersonalizedTicketSize"}, | 33 | {15, &ETicket::GetPersonalizedTicketSize, "GetPersonalizedTicketSize"}, |
| 34 | {16, nullptr, "GetCommonTicketData"}, | 34 | {16, nullptr, "GetCommonTicketData"}, |
| 35 | {17, nullptr, "GetPersonalizedTicketData"}, | 35 | {17, nullptr, "GetPersonalizedTicketData"}, |
| 36 | {18, nullptr, "OwnTicket"}, | 36 | {18, nullptr, "OwnTicket"}, |
| @@ -206,6 +206,22 @@ private: | |||
| 206 | rb.Push<u64>(ticket.size()); | 206 | rb.Push<u64>(ticket.size()); |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | void GetPersonalizedTicketSize(Kernel::HLERequestContext& ctx) { | ||
| 210 | IPC::RequestParser rp{ctx}; | ||
| 211 | const auto rights_id = rp.PopRaw<u128>(); | ||
| 212 | |||
| 213 | LOG_DEBUG(Service_ETicket, "called, rights_id={:016X}{:016X}", rights_id[1], rights_id[0]); | ||
| 214 | |||
| 215 | if (!CheckRightsId(ctx, rights_id)) | ||
| 216 | return; | ||
| 217 | |||
| 218 | const auto ticket = keys.GetPersonalizedTickets().at(rights_id); | ||
| 219 | |||
| 220 | IPC::ResponseBuilder rb{ctx, 4}; | ||
| 221 | rb.Push(RESULT_SUCCESS); | ||
| 222 | rb.Push<u64>(ticket.size()); | ||
| 223 | } | ||
| 224 | |||
| 209 | }; | 225 | }; |
| 210 | 226 | ||
| 211 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 227 | void InstallInterfaces(SM::ServiceManager& service_manager) { |