Exemple #1
0
int kirk_CMD1_ex(void* outbuff, void* inbuff, int size, KIRK_CMD1_HEADER* header)
{
    u8* buffer = (u8*)malloc(size);
    memcpy(buffer, header, sizeof(KIRK_CMD1_HEADER));
    memcpy(buffer+sizeof(KIRK_CMD1_HEADER), inbuff, header->data_size);
    int ret = kirk_CMD1(outbuff, buffer, size, 1);
    free(buffer);
    return ret;
}
Exemple #2
0
int sceUtilsBufferCopyWithRange(void* outbuff, int outsize, void* inbuff, int insize, int cmd)
{
    switch(cmd)
    {
		case KIRK_CMD_DECRYPT_PRIVATE:
             if(insize % 16) return SUBCWR_NOT_16_ALGINED;
             int ret = kirk_CMD1(outbuff, inbuff, insize, 1);
             if(ret == KIRK_HEADER_HASH_INVALID) return SUBCWR_HEADER_HASH_INVALID;
             return ret;
             break;
		case KIRK_CMD_ENCRYPT_IV_0: return kirk_CMD4(outbuff, inbuff, insize); break;
		case KIRK_CMD_DECRYPT_IV_0: return kirk_CMD7(outbuff, inbuff, insize); break;
		case KIRK_CMD_PRIV_SIG_CHECK: return kirk_CMD10(inbuff, insize); break;
		case KIRK_CMD_SHA1_HASH: return kirk_CMD11(outbuff, inbuff, insize); break;
	}
	return -1;
}
Exemple #3
0
void test_cmd1() {
    int result;
    u8 src[0x100] = { 0 };
    u8 dst[0x10] = { 0 };

    printf("CMD1 test...\n");

    *(u32 *)(&src[0x60]) = 1   ; // Mode
    *(u32 *)(&src[0x70]) = 0x10; // DataSize
    *(u32 *)(&src[0x74]) = 0   ; // DataOffset

    result = kirk_CMD1(dst, (void*)src, 0x100, 0);

    hex_dump("CMD 1 in", src, 0x100);
    hex_dump("CMD 1 out", dst, 0x10);
    printf("CMD 1 result: %d\n", result);
}