示例#1
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;
}
示例#2
0
文件: main.c 项目: soywiz/cspspemu
void test_cmd7() {
    int result;
    u8 src[0x20 + 0x14] = { 0 };
    u8 dst[0x20] = { 0 };

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

    *(u32 *)(&src[0x00]) = 5   ; // Mode
    *(u32 *)(&src[0x0C]) = 0x03; // KeySeed
    *(u32 *)(&src[0x10]) = 1; // DataSize

    result = kirk_CMD7(dst, (void*)src, 0x20);

    hex_dump("CMD 7 in", src, 0x20 + 0x14);
    hex_dump("CMD 7 out", dst, 0x20);
    printf("CMD 7 result: %d\n", result);
}