]> Chaos Git - corbenik/ctrulib.git/commitdiff
Fix misc FSUSER & PS fail
authorfincs <fincs.alt1@gmail.com>
Fri, 10 Jun 2016 16:15:41 +0000 (18:15 +0200)
committerfincs <fincs.alt1@gmail.com>
Fri, 10 Jun 2016 16:15:41 +0000 (18:15 +0200)
libctru/source/services/fs.c
libctru/source/services/ps.c

index 3470283320ec81c87dc63d98c57fe296dff013ea..8894cf8ccd987e1e8a6a39b2c0244d48bcaabeb6 100644 (file)
@@ -1137,8 +1137,8 @@ Result FSUSER_ExportIntegrityVerificationSeed(FS_IntegrityVerificationSeed* seed
        u32 *cmdbuf = getThreadCommandBuffer();
 
        cmdbuf[0] = IPC_MakeHeader(0x84A,0,2); // 0x84A0002
-       cmdbuf[2] = IPC_Desc_Buffer(sizeof(FS_IntegrityVerificationSeed), IPC_BUFFER_W);
-       cmdbuf[3] = (u32) seed;
+       cmdbuf[1] = IPC_Desc_Buffer(sizeof(FS_IntegrityVerificationSeed), IPC_BUFFER_W);
+       cmdbuf[2] = (u32) seed;
 
        Result ret = 0;
        if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
@@ -1151,8 +1151,8 @@ Result FSUSER_ImportIntegrityVerificationSeed(FS_IntegrityVerificationSeed* seed
        u32 *cmdbuf = getThreadCommandBuffer();
 
        cmdbuf[0] = IPC_MakeHeader(0x84B,0,2); // 0x84B0002
-       cmdbuf[2] = IPC_Desc_Buffer(sizeof(FS_IntegrityVerificationSeed), IPC_BUFFER_R);
-       cmdbuf[3] = (u32) seed;
+       cmdbuf[1] = IPC_Desc_Buffer(sizeof(FS_IntegrityVerificationSeed), IPC_BUFFER_R);
+       cmdbuf[2] = (u32) seed;
 
        Result ret = 0;
        if(R_FAILED(ret = svcSendSyncRequest(fsSession()))) return ret;
index 53ae0eb9fbafc2654ba88a6edd87be625162fb2d..1ac82cbce0df71cd71f13c12c4598a7fd0565940 100644 (file)
@@ -1,4 +1,5 @@
 #include <stdlib.h>
+#include <string.h>
 #include <3ds/types.h>
 #include <3ds/result.h>
 #include <3ds/svc.h>
@@ -34,10 +35,7 @@ Result PS_EncryptDecryptAes(u32 size, u8* in, u8* out, PS_AESAlgorithm aes_algo,
 
        cmdbuf[0] = IPC_MakeHeader(0x4,7,4); // 0x401C4
        cmdbuf[1] = size;
-       cmdbuf[2] = _iv[0];
-       cmdbuf[3] = _iv[1];
-       cmdbuf[4] = _iv[2];
-       cmdbuf[5] = _iv[3];
+       memcpy(&cmdbuf[2], _iv, 16);
        cmdbuf[6] = aes_algo;
        cmdbuf[7] = key_type;
        cmdbuf[8] = IPC_Desc_PXIBuffer(size,0,false);
@@ -47,10 +45,7 @@ Result PS_EncryptDecryptAes(u32 size, u8* in, u8* out, PS_AESAlgorithm aes_algo,
 
        if(R_FAILED(ret = svcSendSyncRequest(psHandle)))return ret;
 
-       _iv[0] = cmdbuf[2] & 0xFF;
-       _iv[1] = cmdbuf[3] & 0xFF;
-       _iv[2] = cmdbuf[4] & 0xFF;
-       _iv[3] = cmdbuf[5] & 0xFF;
+       memcpy(_iv, &cmdbuf[2], 16);
 
        return (Result)cmdbuf[1];
 }
@@ -68,9 +63,7 @@ Result PS_EncryptSignDecryptVerifyAesCcm(u8* in, u32 in_size, u8* out, u32 out_s
        cmdbuf[3] = mac_data_len;
        cmdbuf[4] = data_len;
        cmdbuf[5] = mac_len;
-       cmdbuf[6] = _nonce[0];
-       cmdbuf[7] = _nonce[1];
-       cmdbuf[8] = _nonce[2];
+       memcpy(&cmdbuf[6], _nonce, 12);
        cmdbuf[9] = aes_algo;
        cmdbuf[10] = key_type;
        cmdbuf[8] = IPC_Desc_PXIBuffer(in_size,0,false);