diff options
| author | Steveice10 <1269164+Steveice10@users.noreply.github.com> | 2023-09-05 12:09:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-05 21:09:42 +0200 |
| commit | 0a51fe78544daafceadbd5418e406bf11e703851 (patch) | |
| tree | 83c7ae92e1c46ec70ec8ab79420362e5e4b0212d /src/core/hle/service/es | |
| parent | c24ed3ecafa97dd41eea8738267d5f8347324e00 (diff) | |
core: Add support for loading NSPs with personalized tickets. (#10048)
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
Diffstat (limited to 'src/core/hle/service/es')
| -rw-r--r-- | src/core/hle/service/es/es.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp index 446f46b3c..9eaae4c4b 100644 --- a/src/core/hle/service/es/es.cpp +++ b/src/core/hle/service/es/es.cpp @@ -122,20 +122,18 @@ private: } void ImportTicket(HLERequestContext& ctx) { - const auto ticket = ctx.ReadBuffer(); + const auto raw_ticket = ctx.ReadBuffer(); [[maybe_unused]] const auto cert = ctx.ReadBuffer(1); - if (ticket.size() < sizeof(Core::Crypto::Ticket)) { + if (raw_ticket.size() < sizeof(Core::Crypto::Ticket)) { LOG_ERROR(Service_ETicket, "The input buffer is not large enough!"); IPC::ResponseBuilder rb{ctx, 2}; rb.Push(ERROR_INVALID_ARGUMENT); return; } - Core::Crypto::Ticket raw{}; - std::memcpy(&raw, ticket.data(), sizeof(Core::Crypto::Ticket)); - - if (!keys.AddTicketPersonalized(raw)) { + Core::Crypto::Ticket ticket = Core::Crypto::Ticket::Read(raw_ticket); + if (!keys.AddTicket(ticket)) { LOG_ERROR(Service_ETicket, "The ticket could not be imported!"); IPC::ResponseBuilder rb{ctx, 2}; rb.Push(ERROR_INVALID_ARGUMENT); |
