]> Chaos Git - corbenik/ctrulib.git/commitdiff
Implemented sslcAddCert.
authoryellows8 <yellows8@users.noreply.github.com>
Thu, 31 Mar 2016 15:28:32 +0000 (11:28 -0400)
committeryellows8 <yellows8@users.noreply.github.com>
Thu, 31 Mar 2016 15:28:32 +0000 (11:28 -0400)
libctru/include/3ds/services/sslc.h
libctru/source/services/sslc.c

index 5971ea0e4e0a35e2b2a639796446820d5a29597a..582c83b2615ed09cf5ace0207b6299517da511a0 100644 (file)
@@ -207,3 +207,10 @@ Result sslcContextGetState(sslcContext *context, u32 *out);
  */
 Result sslcContextInitSharedmem(sslcContext *context, u8 *buf, u32 size);
 
+/*
+ * @brief This loads the specified cert. This needs updated once it's known what the cert format is and what the cert is used for later.
+ * @param buf Input cert.
+ * @param size Cert size.
+ */
+Result sslcAddCert(sslcContext *context, u8 *buf, u32 size);
+
index 721838e0049878c19a64da9fea6e9ca18a2e7aee..2c815d3e5fd99e4d0a33b963e71e5a45e9737934 100644 (file)
@@ -377,6 +377,23 @@ static Result sslcipc_ContextInitSharedmem(sslcContext *context, u32 size)
        return cmdbuf[1];
 }
 
+Result sslcAddCert(sslcContext *context, u8 *buf, u32 size)
+{
+       u32* cmdbuf=getThreadCommandBuffer();
+
+       cmdbuf[0]=IPC_MakeHeader(0x20,2,2); // 0x200082
+       cmdbuf[1]=context->sslchandle;
+       cmdbuf[2]=size;
+       cmdbuf[3]=IPC_Desc_Buffer(size, IPC_BUFFER_R);
+       cmdbuf[4]=(u32)buf;
+
+       Result ret=0;
+       if(R_FAILED(ret=svcSendSyncRequest(context->servhandle)))return ret;
+       ret = cmdbuf[1];
+
+       return ret;
+}
+
 Result sslcCreateContext(sslcContext *context, int sockfd, u32 input_opt, char *hostname)
 {
        Result ret=0;