Advertisement
Reisyukaku

SecureinfoA stuff

Jul 31st, 2016
744
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.56 KB | None | 0 0
  1. int modifyFriendSeedAndSecInfo(int v1){  
  2.     DebugPrint("Setting");
  3.     CFGI_Init();
  4.     DebugPrint("SetLocalFriendCodeSeed\n");
  5.     if (*(void*)0x1FF80014 & 1 ) goto LABEL_8; //If retail
  6.     sub_124A6C(&psHandle, "ps:ps");
  7.     v2 = nn::crypto::RsaKey::RsaKey(&keyHandle);
  8.     if (R_SUCCEEDED(CFGI_VerifySigLocalFriendCodeSeed(v2))
  9.     || R_SUCCEEDED(ret = CFGI_SetGetLocalFriendCodeSeedData(&FSeedData, 1))
  10.     && (sub_12961C(&keyHandle, rsa_blob, 0x800u),
  11.         sub_11E35C(&v52, &keyHandle, 0x208u, v4),
  12.         psSignRsaSha256(&FSeedData, 0x10, &FSeedSigBuf, &v52),
  13.         nn::crypto::RsaKey::Finalize(&keyHandle),
  14.         R_SUCCEEDED(ret = CFGI_SetLocalFriendCodeSeedSignature(&FSeedSigBuf)))
  15.         && R_SUCCEEDED(ret = CFGI_VerifySigLocalFriendCodeSeed(ret))
  16.         && R_SUCCEEDED(ret = CFGI_DeleteCreateNANDLocalFriendCodeSeed())
  17.     )
  18.     {
  19.         psHandleClose();
  20. LABEL_8:
  21.         CFGI_Exit();
  22.         DebugPrint("SetLocalFriendCodeSeed success.\n");
  23.         ret = 0;
  24.     }
  25.     *(v1 + 28) = ret;
  26.     if (R_FAILED(ret)
  27.     {
  28.         DebugPrint("Failed set local friend code seed. resulst = %08x\n", ret);
  29.         return;
  30.     }
  31.     DebugPrint("SetSecureInfo\n", ret & 0x80000000);
  32.     CFGI_Init();
  33.     v5 = *(getRegionDataPtr() + 2);
  34.     if (*(void*)0x1FF80014 & 1 ) goto LABEL_33;
  35.     sub_124A6C(&psHandle, dword_140350);
  36.     nn::crypto::RsaKey::RsaKey(&keyHandle2);
  37.     if (R_FAILED(CFGI_VerifySigSecureInfo())
  38.     {
  39.         LOWORD(keyHandle) = v5;
  40.         sub_11F2B0();
  41.     }
  42.     else
  43.     {
  44.         v6 = CFGI_SecureInfoGetData(&keyHandle);
  45.         if (R_FAILED(v6)) goto LABEL_34;
  46.         LOBYTE(keyHandle) = v5;
  47.     }
  48.     sub_12961C(&keyHandle2, dword_1488A8, 0x800u);
  49.     sub_11E35C(&v57, &keyHandle2, 0x208u, v7);
  50.     psSignRsaSha256(&keyHandle, 17, &v58, &v57);
  51.     nn::crypto::RsaKey::Finalize(&keyHandle2);
  52.  
  53.     if (R_SUCCEEDED(v6 = CFGI_SetSecureInfo(&keyHandle, &v58)))
  54.     {
  55.         if (R_SUCCEEDED(v6 = CFGI_VerifySigSecureInfo()))
  56.         {
  57.             if (R_SUCCEEDED(v6 = CFGI_DeleteCreateNANDSecureInfo(v6)))
  58.             {
  59.                 psHandleClose();
  60.                 v8 = getRegionDataPtr();
  61.                 v9 = *(v8 + 4);
  62.                 LOBYTE(v49) = *(v8 + 4);
  63.                 if (R_SUCCEEDED(v6 = CFGI_SetConfigInfoBlk4(655362, &v49, 1)))
  64.                 {
  65.                     if (R_SUCCEEDED(v6 = CFGI_UpdateConfigNANDSavegame(v6)))
  66.                     {
  67.                         sub_124E50(1);
  68.                         if (R_SUCCEEDED(nn::cfg::nor::CTR::SetLanguage(v9))
  69.                             || R_SUCCEEDED(v6 = sub_1250AC(v5))
  70.                             && R_SUCCEEDED(v6 = nn::cfg::nor::CTR::SetLanguage(v9))
  71.                             )
  72.                         {
  73.                             CFGNOR_Exit();
  74.                             if ( *(getRegionDataPtr() + 3) == v5
  75.                             || (v49 = -1,
  76.                                 _aeabi_memclr4(&v51, 0x800u),
  77.                                 _aeabi_memclr4(&v55, 0x800u),
  78.                                 v6 = CFGI_GetConfigInfoBlk8(&v50, 1, 1048578),
  79.                                 !(v6 >> 31))
  80.                             && R_SUCCEEDED(v6 = CFGI_GetConfigInfoBlk8(&v49, 4, 720896))
  81.                             && (v10 = sub_12B9D4(v5),
  82.                                 v50 = v10,
  83.                                 v49 = v49 & 0xFFFFFF | (v10 << 24),
  84.                                 R_SUCCEEDED(v6 = CFGI_SetConfigInfoBlk4(1048578, &v50, 1))
  85.                                 )
  86.                             && R_SUCCEEDED(v6 = CFGI_SetConfigInfoBlk4(0xB0000, &v49, 4))
  87.                             && R_SUCCEEDED(v6 = CFGI_SetConfigInfoBlk4(0xB0001, &v51, 2048))
  88.                             && R_SUCCEEDED(v6 = CFGI_SetConfigInfoBlk4(0xB0002, &v55, 2048))
  89.                             && R_SUCCEEDED(v6 = CFGI_UpdateConfigNANDSavegame(v6)) )
  90.                             {
  91.                                 LABEL_33:
  92.                                 CFGI_Exit();
  93.                                 DebugPrint("SetSecureInfo success.\n");
  94.                                 v6 = 0;
  95.                                 goto LABEL_34;
  96.                             }
  97.                         }
  98.                     }
  99.                 }
  100.             }
  101.         }
  102.     }
  103.     //Ommitted some code here
  104. }
  105.  
  106. int psSignRsaSha256(int seedData, int sigSize, int sigBuff, int key)
  107. {
  108.     int v6, v8;
  109.     char hash;
  110.  
  111.     nn::crypto::CalculateSha256(&hash, seedData, sigSize);
  112.     sub_11E35C(&v8, key, 0x208u, v6);
  113.     return PS_SignRsaSha256(&hash, sigBuf, *(key + 0x200) / 8, &v8);
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement