Skip to content

Commit 8f04264

Browse files
committed
Update to handle 20.0.0 changes
This should be enough to run on 20.0.0. Signed-off-by: Mary Guillemard <mary@mary.zone>
1 parent 6b96bbc commit 8f04264

6 files changed

Lines changed: 187 additions & 5 deletions

File tree

network_mitm/source/networkmitm_ssl_connection_impl.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,16 @@ SslConnectionImpl::GetDtlsHandshakeTimeout(const ams::sf::OutBuffer &timespan) {
323323
R_SUCCEED();
324324
}
325325

326-
Result SslConnectionImpl::SetPrivateOptionReal(
327-
const ams::ssl::sf::OptionType &option, u32 value) {
326+
Result
327+
SslConnectionImpl::SetPrivateOptionReal(const ams::ssl::sf::OptionType &option,
328+
u32 value) {
328329
return sslConnectionSetPrivateOption_sfMitm(m_forward_service.get(), value,
329330
static_cast<u32>(option));
330331
}
331332

332333
Result
333-
SslConnectionImpl::SetPrivateOption(const ams::ssl::sf::OptionType &option, u32 value) {
334+
SslConnectionImpl::SetPrivateOption(const ams::ssl::sf::OptionType &option,
335+
u32 value) {
334336
if (g_should_disable_ssl_verification &&
335337
option == ams::ssl::sf::OptionType::SkipDefaultVerify) {
336338
m_requested_default_verify = value;
@@ -379,4 +381,23 @@ Result SslConnectionImpl::GetIoTimeout(ams::sf::Out<u32> timeout) {
379381
R_SUCCEED();
380382
}
381383

384+
Result
385+
SslConnectionImpl::GetSessionTicket(const ams::sf::OutBuffer &session_ticket,
386+
ams::sf::Out<u32> out_session_ticket_size) {
387+
R_TRY(sslConnectionGetSessionTicket_sfMitm(
388+
m_forward_service.get(), session_ticket.GetPointer(),
389+
session_ticket.GetSize(), out_session_ticket_size.GetPointer()));
390+
391+
R_SUCCEED();
392+
}
393+
394+
Result
395+
SslConnectionImpl::SetSessionTicket(const ams::sf::InBuffer &session_ticket) {
396+
R_TRY(sslConnectionSetSessionTicket_sfMitm(m_forward_service.get(),
397+
session_ticket.GetPointer(),
398+
session_ticket.GetSize()));
399+
400+
R_SUCCEED();
401+
}
402+
382403
} // namespace ams::ssl::sf::impl

network_mitm/source/networkmitm_ssl_connection_impl.hpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
#pragma once
1717
#include <stratosphere.hpp>
1818
#include "networkmitm_ssl_types.hpp"
19-
#include "networkmitm_ssl_types.hpp"
2019
#include "networkmitm_utils.hpp"
2120
#include "impl/pcap/pcap_file_writer.hpp"
2221
#include "impl/pcap/pcap_utils.hpp"
2322

2423
using namespace ams::ssl::mitm::pcap;
2524

25+
2626
#define AMS_INTERFACE_ISSLCONNECTION_INFO(C, H) \
2727
AMS_SF_METHOD_INFO(C, H, 0, Result, SetSocketDescriptor, (u32 input_socket_fd, ams::sf::Out<u32> output_socket_fd), (input_socket_fd, output_socket_fd)) \
2828
AMS_SF_METHOD_INFO(C, H, 1, Result, SetHostName, (const ams::sf::InBuffer &hostname), (hostname)) \
@@ -59,7 +59,9 @@ using namespace ams::ssl::mitm::pcap;
5959
AMS_SF_METHOD_INFO(C, H, 32, Result, GetSrtpCipher, (ams::sf::Out<u16> cipher), (cipher), hos::Version_16_0_0) \
6060
AMS_SF_METHOD_INFO(C, H, 33, Result, ExportKeyingMaterial, (const ams::sf::InBuffer &label, const ams::sf::InBuffer &context, const ams::sf::OutBuffer &material), (label, context, material), hos::Version_16_0_0) \
6161
AMS_SF_METHOD_INFO(C, H, 34, Result, SetIoTimeout, (u32 timeout), (timeout), hos::Version_16_0_0) \
62-
AMS_SF_METHOD_INFO(C, H, 35, Result, GetIoTimeout, (ams::sf::Out<u32> timeout), (timeout), hos::Version_16_0_0)
62+
AMS_SF_METHOD_INFO(C, H, 35, Result, GetIoTimeout, (ams::sf::Out<u32> timeout), (timeout), hos::Version_16_0_0) \
63+
AMS_SF_METHOD_INFO(C, H, 36, Result, GetSessionTicket, (const ams::sf::OutBuffer &session_ticket, ams::sf::Out<u32> out_session_ticket_size), (session_ticket, out_session_ticket_size), hos::Version_20_0_0) \
64+
AMS_SF_METHOD_INFO(C, H, 37, Result, SetSessionTicket, (const ams::sf::InBuffer &session_ticket), (session_ticket), hos::Version_20_0_0)
6365

6466
AMS_SF_DEFINE_INTERFACE(ams::ssl::sf, ISslConnection, AMS_INTERFACE_ISSLCONNECTION_INFO, 0xA9B8D9AA)
6567

@@ -140,6 +142,8 @@ namespace ams::ssl::sf::impl {
140142
Result GetOptionReal(const ams::ssl::sf::OptionType &value, ams::sf::Out<bool> option);
141143
Result SetVerifyOptionReal(const ams::ssl::sf::VerifyOption &option);
142144
Result SetPrivateOptionReal(const ams::ssl::sf::OptionType &option, u32 value);
145+
Result GetSessionTicket(const ams::sf::OutBuffer &session_ticket, ams::sf::Out<u32> out_session_ticket_size);
146+
Result SetSessionTicket(const ams::sf::InBuffer &session_ticket);
143147
};
144148

145149
static_assert(ams::ssl::sf::IsISslConnection<ams::ssl::sf::impl::SslConnectionImpl>);

network_mitm/source/networkmitm_ssl_types.hpp

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,70 @@ namespace ams::ssl::sf {
8888
TTeleSecGlobalRootClass2 = 1057,
8989
DigiCertTLSECCP384RootG5 = 1058,
9090
DigiCertTLSRSA4096RootG5 = 1059,
91+
SslRrNetDevNtdNintendo01 = 32801,
92+
SslRrNetDevNtdNintendo02 = 32802,
93+
SslRrNetDevNtdNintendo03 = 32803,
94+
SslRrNetDevNtdNintendo04 = 32804,
95+
SslRrNetDevNtdNintendo05 = 32805,
96+
SslRrNetDevNtdNintendo06 = 32806,
97+
SslRrNetDevNtdNintendo07 = 32807,
98+
SslRrNetDevNtdNintendo08 = 32808,
99+
SslRrNetDevNtdNintendo09 = 32809,
100+
SslRrNetDevNtdNintendo10 = 32810,
101+
SslRrNetDevNtdNintendo11 = 32811,
102+
SslRrNetDevNtdNintendo12 = 32812,
103+
SslRrNetDevNtdNintendo13 = 32813,
104+
SslRrNetDevNtdNintendo14 = 32814,
105+
SslRrNetDevNtdNintendo15 = 32815,
106+
SslRrNetDevNtdNintendo16 = 32816,
107+
SslRrNetDevNtdNintendo17 = 32817,
108+
SslRrNetDevNtdNintendo18 = 32818,
109+
SslRrNetDevNtdNintendo19 = 32819,
110+
SslRrNetDevNtdNintendo20 = 32820,
111+
SslRrNetDevNtdNintendo21 = 32821,
112+
SslRrNetDevNtdNintendo22 = 32822,
113+
SslRrNetDevNtdNintendo23 = 32823,
114+
SslRrNetDevNtdNintendo24 = 32824,
115+
SslRrNetDevNtdNintendo25 = 32825,
116+
SslRrNetDevNtdNintendo26 = 32826,
117+
SslRrNetDevNtdNintendo27 = 32827,
118+
SslRrNetDevNtdNintendo28 = 32828,
119+
SslRrNetDevNtdNintendo29 = 32829,
120+
SslRrNetDevNtdNintendo30 = 32830,
121+
SslRrNetDevNtdNintendo31 = 32831,
122+
SslRrNetDevNtdNintendo32 = 32832,
123+
SslRrNetDevNtdNintendo33 = 32833,
124+
SslRrNetDevNtdNintendo34 = 32834,
125+
SslRrNetDevNtdNintendo35 = 32835,
126+
SslRrNetDevNtdNintendo36 = 32836,
127+
SslRrNetDevNtdNintendo37 = 32837,
128+
SslRrNetDevNtdNintendo38 = 32838,
129+
SslRrNetDevNtdNintendo39 = 32839,
130+
SslRrNetDevNtdNintendo40 = 32840,
131+
SslRrNetDevNtdNintendo41 = 32841,
132+
SslRrNetDevNtdNintendo42 = 32842,
133+
SslRrNetDevNtdNintendo43 = 32843,
134+
SslRrNetDevNtdNintendo44 = 32844,
135+
SslRrNetDevNtdNintendo45 = 32845,
136+
SslRrNetDevNtdNintendo46 = 32846,
137+
SslRrNetDevNtdNintendo47 = 32847,
138+
SslRrNetDevNtdNintendo48 = 32848,
139+
SslRrNetDevNtdNintendo49 = 32849,
140+
SslRrNetDevNtdNintendo50 = 32850,
141+
SslRrNetDevNtdNintendo51 = 32851,
142+
SslRrNetDevNtdNintendo52 = 32852,
143+
SslRrNetDevNtdNintendo53 = 32853,
144+
SslRrNetDevNtdNintendo54 = 32854,
145+
SslRrNetDevNtdNintendo55 = 32855,
146+
SslRrNetDevNtdNintendo56 = 32856,
147+
SslRrNetDevNtdNintendo57 = 32857,
148+
SslRrNetDevNtdNintendo58 = 32858,
149+
SslRrNetDevNtdNintendo59 = 32859,
150+
SslRrNetDevNtdNintendo60 = 32860,
151+
SslRrNetDevNtdNintendo61 = 32861,
152+
SslRrNetDevNtdNintendo62 = 32862,
153+
SslRrNetDevNtdNintendo63 = 32863,
154+
SslRrNetDevNtdNintendo64 = 32864,
91155
All = 4294967295,
92156
};
93157

network_mitm/source/networkmitm_utils.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
#include <stratosphere.hpp>
1818
#include "networkmitm_ssl_types.hpp"
1919

20+
// We do not have an up to date Atmosphere-libs but this should be enough for now.
21+
// XXX: Remove me once it get updated.
22+
namespace ams::hos {
23+
const Version Version_20_0_0 = static_cast<Version>(ATMOSPHERE_TARGET_FIRMWARE(20, 0, 0));
24+
}
25+
2026
namespace ams::ssl::sf::impl {
2127
extern bool g_should_mitm_all;
2228
extern bool g_should_disable_ssl_verification;

network_mitm/source/shim/ssl_shim.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,3 +690,20 @@ Result sslConnectionSetIoTimeout_sfMitm(Service *s, u32 timeout) {
690690
Result sslConnectionGetIoTimeout_sfMitm(Service *s, u32 *timeout) {
691691
return serviceMitmDispatchOut(s, 35, *timeout);
692692
}
693+
694+
Result sslConnectionGetSessionTicket_sfMitm(Service *s, void *session_ticket,
695+
size_t session_ticket_size,
696+
u32 *out_session_ticket_size) {
697+
return serviceMitmDispatchOut(
698+
s, 36, *out_session_ticket_size,
699+
.buffer_attrs = {SfBufferAttr_Out | SfBufferAttr_HipcMapAlias},
700+
.buffers = {{session_ticket, session_ticket_size}});
701+
}
702+
703+
Result sslConnectionSetSessionTicket_sfMitm(Service *s,
704+
const void *session_ticket,
705+
size_t session_ticket_size) {
706+
return serviceMitmDispatch(
707+
s, 37, .buffer_attrs = {SfBufferAttr_In | SfBufferAttr_HipcMapAlias},
708+
.buffers = {{session_ticket, session_ticket_size}});
709+
}

network_mitm/source/shim/ssl_shim.h

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,70 @@ typedef enum {
9393
CaCertificateId_TTeleSecGlobalRootClass2_sf = 1057,
9494
CaCertificateId_DigiCertTLSECCP384RootG5_sf = 1058,
9595
CaCertificateId_DigiCertTLSRSA4096RootG5_sf = 1059,
96+
CaCertificateId_SslRrNetDevNtdNintendo01_sf = 32801,
97+
CaCertificateId_SslRrNetDevNtdNintendo02_sf = 32802,
98+
CaCertificateId_SslRrNetDevNtdNintendo03_sf = 32803,
99+
CaCertificateId_SslRrNetDevNtdNintendo04_sf = 32804,
100+
CaCertificateId_SslRrNetDevNtdNintendo05_sf = 32805,
101+
CaCertificateId_SslRrNetDevNtdNintendo06_sf = 32806,
102+
CaCertificateId_SslRrNetDevNtdNintendo07_sf = 32807,
103+
CaCertificateId_SslRrNetDevNtdNintendo08_sf = 32808,
104+
CaCertificateId_SslRrNetDevNtdNintendo09_sf = 32809,
105+
CaCertificateId_SslRrNetDevNtdNintendo10_sf = 32810,
106+
CaCertificateId_SslRrNetDevNtdNintendo11_sf = 32811,
107+
CaCertificateId_SslRrNetDevNtdNintendo12_sf = 32812,
108+
CaCertificateId_SslRrNetDevNtdNintendo13_sf = 32813,
109+
CaCertificateId_SslRrNetDevNtdNintendo14_sf = 32814,
110+
CaCertificateId_SslRrNetDevNtdNintendo15_sf = 32815,
111+
CaCertificateId_SslRrNetDevNtdNintendo16_sf = 32816,
112+
CaCertificateId_SslRrNetDevNtdNintendo17_sf = 32817,
113+
CaCertificateId_SslRrNetDevNtdNintendo18_sf = 32818,
114+
CaCertificateId_SslRrNetDevNtdNintendo19_sf = 32819,
115+
CaCertificateId_SslRrNetDevNtdNintendo20_sf = 32820,
116+
CaCertificateId_SslRrNetDevNtdNintendo21_sf = 32821,
117+
CaCertificateId_SslRrNetDevNtdNintendo22_sf = 32822,
118+
CaCertificateId_SslRrNetDevNtdNintendo23_sf = 32823,
119+
CaCertificateId_SslRrNetDevNtdNintendo24_sf = 32824,
120+
CaCertificateId_SslRrNetDevNtdNintendo25_sf = 32825,
121+
CaCertificateId_SslRrNetDevNtdNintendo26_sf = 32826,
122+
CaCertificateId_SslRrNetDevNtdNintendo27_sf = 32827,
123+
CaCertificateId_SslRrNetDevNtdNintendo28_sf = 32828,
124+
CaCertificateId_SslRrNetDevNtdNintendo29_sf = 32829,
125+
CaCertificateId_SslRrNetDevNtdNintendo30_sf = 32830,
126+
CaCertificateId_SslRrNetDevNtdNintendo31_sf = 32831,
127+
CaCertificateId_SslRrNetDevNtdNintendo32_sf = 32832,
128+
CaCertificateId_SslRrNetDevNtdNintendo33_sf = 32833,
129+
CaCertificateId_SslRrNetDevNtdNintendo34_sf = 32834,
130+
CaCertificateId_SslRrNetDevNtdNintendo35_sf = 32835,
131+
CaCertificateId_SslRrNetDevNtdNintendo36_sf = 32836,
132+
CaCertificateId_SslRrNetDevNtdNintendo37_sf = 32837,
133+
CaCertificateId_SslRrNetDevNtdNintendo38_sf = 32838,
134+
CaCertificateId_SslRrNetDevNtdNintendo39_sf = 32839,
135+
CaCertificateId_SslRrNetDevNtdNintendo40_sf = 32840,
136+
CaCertificateId_SslRrNetDevNtdNintendo41_sf = 32841,
137+
CaCertificateId_SslRrNetDevNtdNintendo42_sf = 32842,
138+
CaCertificateId_SslRrNetDevNtdNintendo43_sf = 32843,
139+
CaCertificateId_SslRrNetDevNtdNintendo44_sf = 32844,
140+
CaCertificateId_SslRrNetDevNtdNintendo45_sf = 32845,
141+
CaCertificateId_SslRrNetDevNtdNintendo46_sf = 32846,
142+
CaCertificateId_SslRrNetDevNtdNintendo47_sf = 32847,
143+
CaCertificateId_SslRrNetDevNtdNintendo48_sf = 32848,
144+
CaCertificateId_SslRrNetDevNtdNintendo49_sf = 32849,
145+
CaCertificateId_SslRrNetDevNtdNintendo50_sf = 32850,
146+
CaCertificateId_SslRrNetDevNtdNintendo51_sf = 32851,
147+
CaCertificateId_SslRrNetDevNtdNintendo52_sf = 32852,
148+
CaCertificateId_SslRrNetDevNtdNintendo53_sf = 32853,
149+
CaCertificateId_SslRrNetDevNtdNintendo54_sf = 32854,
150+
CaCertificateId_SslRrNetDevNtdNintendo55_sf = 32855,
151+
CaCertificateId_SslRrNetDevNtdNintendo56_sf = 32856,
152+
CaCertificateId_SslRrNetDevNtdNintendo57_sf = 32857,
153+
CaCertificateId_SslRrNetDevNtdNintendo58_sf = 32858,
154+
CaCertificateId_SslRrNetDevNtdNintendo59_sf = 32859,
155+
CaCertificateId_SslRrNetDevNtdNintendo60_sf = 32860,
156+
CaCertificateId_SslRrNetDevNtdNintendo61_sf = 32861,
157+
CaCertificateId_SslRrNetDevNtdNintendo62_sf = 32862,
158+
CaCertificateId_SslRrNetDevNtdNintendo63_sf = 32863,
159+
CaCertificateId_SslRrNetDevNtdNintendo64_sf = 32864,
96160
CaCertificateId_All_sf = 4294967295,
97161
} CaCertificateId_sf;
98162

@@ -335,6 +399,12 @@ Result sslConnectionExportKeyingMaterial_sfMitm(
335399
size_t context_size, void *material, size_t material_size);
336400
Result sslConnectionSetIoTimeout_sfMitm(Service *s, u32 timeout);
337401
Result sslConnectionGetIoTimeout_sfMitm(Service *s, u32 *timeout);
402+
Result sslConnectionGetSessionTicket_sfMitm(Service *s, void *session_ticket,
403+
size_t session_ticket_size,
404+
u32 *out_session_ticket_size);
405+
Result sslConnectionSetSessionTicket_sfMitm(Service *s,
406+
const void *session_ticket,
407+
size_t session_ticket_size);
338408

339409
#ifdef __cplusplus
340410
}

0 commit comments

Comments
 (0)