diff --git a/libctru/include/3ds.h b/libctru/include/3ds.h index 21840d5..40c1025 100644 --- a/libctru/include/3ds.h +++ b/libctru/include/3ds.h @@ -39,8 +39,8 @@ extern "C" { #include <3ds/services/gsplcd.h> #include <3ds/services/hid.h> #include <3ds/services/irrst.h> -#include <3ds/services/httpc.h> #include <3ds/services/sslc.h> +#include <3ds/services/httpc.h> #include <3ds/services/uds.h> #include <3ds/services/ndm.h> #include <3ds/services/ir.h> diff --git a/libctru/include/3ds/services/httpc.h b/libctru/include/3ds/services/httpc.h index 21d9151..75866ca 100644 --- a/libctru/include/3ds/services/httpc.h +++ b/libctru/include/3ds/services/httpc.h @@ -129,6 +129,13 @@ Result httpcGetResponseHeader(httpcContext *context, char* name, char* value, u3 */ Result httpcAddTrustedRootCA(httpcContext *context, u8 *cert, u32 certsize); +/** + * @brief Adds a default RootCA cert to a HTTP context. + * @param context Context to use. + * @param certID ID of the cert to add, see sslc.h. + */ +Result httpcAddDefaultCert(httpcContext *context, SSLC_DefaultRootCert certID); + /** * @brief Sets SSL options for the context. * The HTTPC SSL option bits are the same as those defined in sslc.h diff --git a/libctru/source/services/httpc.c b/libctru/source/services/httpc.c index 5f7fb82..296111b 100644 --- a/libctru/source/services/httpc.c +++ b/libctru/source/services/httpc.c @@ -6,6 +6,7 @@ #include <3ds/svc.h> #include <3ds/srv.h> #include <3ds/synchronization.h> +#include <3ds/services/sslc.h> #include <3ds/services/httpc.h> #include <3ds/ipc.h> @@ -418,6 +419,20 @@ Result httpcAddTrustedRootCA(httpcContext *context, u8 *cert, u32 certsize) return cmdbuf[1]; } +Result httpcAddDefaultCert(httpcContext *context, SSLC_DefaultRootCert certID) +{ + u32* cmdbuf=getThreadCommandBuffer(); + + cmdbuf[0]=IPC_MakeHeader(0x25,2,0); // 0x250080 + cmdbuf[1]=context->httphandle; + cmdbuf[2]=certID; + + Result ret=0; + if(R_FAILED(ret=svcSendSyncRequest(context->servhandle)))return ret; + + return cmdbuf[1]; +} + Result httpcSetSSLOpt(httpcContext *context, u32 options) { u32* cmdbuf=getThreadCommandBuffer();