]> Chaos Git - corbenik/ctrulib.git/commitdiff
httpcSetSSLOpt support (#272)
authorKen Sanislo <ksanislo@users.noreply.github.com>
Fri, 8 Apr 2016 21:37:07 +0000 (14:37 -0700)
committeryellows8 <yellows8@users.noreply.github.com>
Fri, 8 Apr 2016 21:37:07 +0000 (17:37 -0400)
httpcSetSSLOpt support

libctru/include/3ds/services/httpc.h
libctru/source/services/httpc.c

index b1696160ff9000f9abbfe059ffb418b0f768847e..73e13944fa1e6d28006833ee8a2196a4df20b77c 100644 (file)
@@ -129,6 +129,14 @@ Result httpcGetResponseHeader(httpcContext *context, char* name, char* value, u3
  */
 Result httpcAddTrustedRootCA(httpcContext *context, u8 *cert, u32 certsize);
 
+/**
+ * @brief Sets SSL options for the context.
+ * The HTTPC SSL option bits are the same as those defined in sslc.h
+ * @param contect Context to set flags on.
+ * @param options SSL option flags.
+ */
+Result httpcSetSSLOpt(httpcContext *context, u32 options);
+
 /**
  * @brief Downloads data from the HTTP context into a buffer.
  * The *entire* content must be downloaded before using httpcCloseContext(), otherwise httpcCloseContext() will hang.
@@ -269,3 +277,11 @@ Result HTTPC_GetResponseStatusCode(Handle handle, Handle contextHandle, u32* out
  */
 Result HTTPC_AddTrustedRootCA(Handle handle, Handle contextHandle, u8 *cert, u32 certsize);
 
+/**
+ * @brief Sets SSL options for the context.
+ * @param handle HTTPC service handle to use.
+ * @param contextHandle HTTP context handle to use.
+ * @param options SSL option flags.
+ */
+Result HTTPC_SetSSLOpt(Handle handle, Handle contextHandle, u32 options);
+
index 6b3f03e0edbb7d0c3d8cb37ad52b0a764383f2b2..5ac75c28296726a81c0456d48114c051876e81ea 100644 (file)
@@ -169,6 +169,11 @@ Result httpcAddTrustedRootCA(httpcContext *context, u8 *cert, u32 certsize)
        return HTTPC_AddTrustedRootCA(context->servhandle, context->httphandle, cert, certsize);
 }
 
+Result httpcSetSSLOpt(httpcContext *context, u32 options)
+{
+       return HTTPC_SetSSLOpt(context->servhandle, context->httphandle, options);
+}
+
 Result httpcDownloadData(httpcContext *context, u8* buffer, u32 size, u32 *downloadedsize)
 {
        Result ret=0;
@@ -460,3 +465,16 @@ Result HTTPC_AddTrustedRootCA(Handle handle, Handle contextHandle, u8 *cert, u32
        return cmdbuf[1];
 }
 
+Result HTTPC_SetSSLOpt(Handle handle, Handle contextHandle, u32 options)
+{
+       u32* cmdbuf=getThreadCommandBuffer();
+
+       cmdbuf[0]=IPC_MakeHeader(0x2B,2,0); // 0x2B0080
+       cmdbuf[1]=contextHandle;
+       cmdbuf[2]=options;
+
+       Result ret=0;
+       if(R_FAILED(ret=svcSendSyncRequest(handle)))return ret;
+
+       return cmdbuf[1];
+}