コード例 #1
0
ファイル: ali_ce_rpc.c プロジェクト: qttest1/PDK_GoBian
int ali_ce_generate_single_level_key(pCE_DEVICE pCeDev, pCE_DATA_INFO pCe_data_info)
{
#if !defined(CONFIG_ALI_RPCNG)
	__u32 desc[] = 
	{ //desc of pointer para
		1, DESC_STATIC_STRU(0, sizeof(CE_DATA_INFO)),
		1, DESC_P_PARA(0, 1, 0),
		//desc of pointer ret
		0,                          
		0,
	};
	jump_to_func(NULL, ali_rpc_call, pCeDev, CE_NPARA(2)|FUNC_CE_GENERATE_SINGLE_LEVEL_KEY, desc);
#else
	Param dev;
	Param ce_info;
	CE_DATA_INFO ce_data;

	ali_ce_umemcpy(&ce_data, pCe_data_info, sizeof(ce_data));
	
	RPC_PARAM_UPDATE(dev, PARAM_IN, PARAM_UINT32, sizeof(__u32), &pCeDev);
	RPC_PARAM_UPDATE(ce_info, PARAM_IN, PARAM_Ce_data_info_rpc, sizeof(Ce_data_info_rpc), &ce_data);

	return RpcCallCompletion(RPC_ce_generate_single_level_key,&dev,&ce_info,NULL);
#endif
}
コード例 #2
0
ファイル: ali_ce_rpc.c プロジェクト: qttest1/PDK_GoBian
int ali_ce_generate_cw_key(__u8 *in_cw_data,__u8 mode,
						__u8 first_pos,__u8 second_pos)
{
#if !defined(CONFIG_ALI_RPCNG)
	__u32 desc[] = 
	{ //desc of pointer para
		1, DESC_STATIC_STRU(0, 16),
		1, DESC_P_PARA(0, 0, 0),
		//desc of pointer ret
		0,
		0,
	};
	jump_to_func(NULL, ali_rpc_call, in_cw_data, CE_NPARA(4)|FUNC_CE_GENERATE_CW_KEY, desc);
#else
	Data_param_rpc data_param;
	Param p1;
	Param p2;
	Param p3;
	Param p4;
	
	ali_ce_umemcpy(&data_param.crypt_data[0], in_cw_data, sizeof(data_param.crypt_data));
	RPC_PARAM_UPDATE(p1, PARAM_IN, PARAM_Data_param_rpc, sizeof(Data_param_rpc), &data_param);
	RPC_PARAM_UPDATE(p2, PARAM_IN, PARAM_UCHAR, sizeof(__u8), &mode);
	RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_UCHAR, sizeof(__u8), &first_pos);
	RPC_PARAM_UPDATE(p4, PARAM_IN, PARAM_UCHAR, sizeof(__u8), &second_pos);

	return RpcCallCompletion(RPC_ce_generate_cw_key,&p1,&p2,&p3,&p4,NULL);
#endif
}
コード例 #3
0
ファイル: ali_ce_rpc.c プロジェクト: qttest1/PDK_GoBian
int ali_ce_key_load(pCE_DEVICE pCeDev, pOTP_PARAM pCe_opt_info)
{
#if !defined(CONFIG_ALI_RPCNG)
	__u32 desc[] = 
	{ //desc of pointer para
		1, DESC_STATIC_STRU(0, sizeof(OTP_PARAM)),
		1, DESC_P_PARA(0, 1, 0),
		//desc of pointer ret
		0,                          
		0,
	};
	jump_to_func(NULL, ali_rpc_call, pCeDev, CE_NPARA(2)|FUNC_CE_LOAD, desc);
#else
	Param dev;
	Param otp_info;
	OTP_PARAM otp_data;
	
	ali_ce_umemcpy(&otp_data, pCe_opt_info, sizeof(otp_data));
	
	RPC_PARAM_UPDATE(dev, PARAM_IN, PARAM_UINT32, sizeof(__u32), &pCeDev);
	RPC_PARAM_UPDATE(otp_info, PARAM_IN, PARAM_Otp_param_rpc, sizeof(Otp_param_rpc), &otp_data);

	return RpcCallCompletion(RPC_ce_key_load,&dev,&otp_info,NULL);
#endif
}
コード例 #4
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_key_load(pCE_DEVICE pCeDev,pOTP_PARAM pCe_opt_info)
{
    UINT32 desc[] = 
    { //desc of pointer para
      1, DESC_STATIC_STRU(0, sizeof(OTP_PARAM)),
      1, DESC_P_PARA(0, 1, 0),
      //desc of pointer ret
      0,                          
      0,
    };
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(2)|FUNC_CE_LOAD, desc);
}
コード例 #5
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_key_generate(pCE_DEVICE pCeDev,pCE_DATA_INFO pCe_data_info)
{
    UINT32 desc[] = 
    { //desc of pointer para
      1, DESC_STATIC_STRU(0, sizeof(CE_DATA_INFO)),
      1, DESC_P_PARA(0, 1, 0),
      //desc of pointer ret
      0,                          
      0,
    };
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(2)|FUNC_CE_GENERATE, desc);
}
コード例 #6
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_generate_cw_key(const UINT8 *in_cw_data,UINT8 mode,UINT8 first_pos,UINT8 second_pos)
{
     UINT32 desc[] = 
    { //desc of pointer para
      1, DESC_STATIC_STRU(0, 16),
      1, DESC_P_PARA(0, 0, 0),
      //desc of pointer ret
      0,                          
      0,
    }; 
    jump_to_func(NULL, OS_hld_caller, in_cw_data, CE_NPARA(4)|FUNC_CE_GENERATE_CW_KEY, desc);
}
コード例 #7
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_aes_key_generate_two_level(pCE_DEVICE pCeDev,pCE_DATA_INFO pCe_data_info_one,
            pCE_DATA_INFO pCe_data_info_two)
{
    UINT32 desc[] = 
    { //desc of pointer para
      2, DESC_STATIC_STRU(0, sizeof(CE_DATA_INFO)),DESC_STATIC_STRU(0, sizeof(CE_DATA_INFO)),
      2, DESC_P_PARA(0, 1, 0),DESC_P_PARA(0, 2, 1),
      //desc of pointer ret
      0,                          
      0,
    };
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(3)|FUNC_CE_KEY_GENERATE_TWO_AES, desc);
}
コード例 #8
0
ファイル: ali_ce_rpc.c プロジェクト: qttest1/PDK_GoBian
void ali_m36_ce_see_uninit(void)
{
	pCE_DEVICE pCeDev = ( pCE_DEVICE ) hld_dev_get_by_type ( NULL, HLD_DEV_TYPE_CE );
	if(NULL != pCeDev)
	{
		ALI_CE_RPC_DEBUG("\nali_m36_ce_see_uninit jump to see ce_api_detach\n\n");
#if !defined(CONFIG_ALI_RPCNG)
		jump_to_func(NULL, ali_rpc_call, NULL, CE_NPARA(0) | FUNC_CE_DETACH, NULL);
#else
		RpcCallCompletion(RPC_ce_api_detach,NULL);
#endif
	}
}
コード例 #9
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_close(pCE_DEVICE pCeDev)
{
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(1)|FUNC_CE_CLOSE, NULL);
}
コード例 #10
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_open(pCE_DEVICE pCeDev)
{
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(1)|FUNC_CE_OPEN, NULL);
}
コード例 #11
0
ファイル: crypto_remote.c プロジェクト: alkap007/ali3606
RET_CODE ce_ioctl(pCE_DEVICE pCeDev,UINT32 cmd,UINT32 param)
{
    UINT32 i;
    UINT32 common_desc[sizeof(ce_io_control)];
    UINT32 *desc = (UINT32 *)common_desc;
    UINT32 *b = (UINT32 *)ce_io_control;
    
    for(i = 0; i < sizeof(ce_io_control)/sizeof(UINT32); i++)
    {
        desc[i] = b[i];
    }
    switch (cmd)
    {
        case IO_OTP_ROOT_KEY_GET:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(OTP_PARAM));
        break;

        case IO_CRYPT_DATA_INPUT:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(DATA_PARAM));
        break;

        case IO_CRYPT_PARAM_SET:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(DES_PARAM));
        break;

        case IO_CRYPT_SECOND_KEY_CONFIG:
           DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(CE_KEY_PARAM));    	
        break;

        case IO_SECOND_KEY_GENERATE:
            desc = NULL ;
        break;

        case IO_CRYPT_DEBUG_GET_KEY:
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_DEBUG_KEY_INFO)); 
            break;
        case IO_CRYPT_POS_IS_OCCUPY:
        {  
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_POS_STS_PARAM));  
        }
        break;
        case IO_CRYPT_POS_SET_USED:
        {
            desc=NULL;
        }
        break;
        case IO_CRYPT_POS_SET_IDLE:
        {           
            desc=NULL;
        }
        break;
        case IO_CRYPT_FOUND_FREE_POS:
        {
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_FOUND_FREE_POS_PARAM));
        }
        break;
        case IO_DECRYPT_PVR_USER_KEY:
        {
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(CE_PVR_KEY_PARAM));
        }
        break;
        default:
            SDBBP();
        break;
        
    }
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(3)|FUNC_CE_IOCTL, desc);
}
コード例 #12
0
ファイル: ali_ce_rpc.c プロジェクト: qttest1/PDK_GoBian
int ali_ce_ioctl(CE_DEVICE *pCeDev,__u32 cmd,__u32 param)
{
#if !defined(CONFIG_ALI_RPCNG)
	__u32 i;
	__u32 common_desc[sizeof(ce_io_control)];
	__u32 *desc = (__u32 *)common_desc;
	__u32 *b = (__u32 *)ce_io_control;

	for(i = 0; i < sizeof(ce_io_control)/sizeof(__u32); i++)
	{
		desc[i] = b[i];
	}
	
	switch (CE_IO_CMD(cmd))
	{
		case CE_IO_CMD(IO_OTP_ROOT_KEY_GET):
			DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(OTP_PARAM));
			break;

		case CE_IO_CMD(IO_CRYPT_DEBUG_GET_KEY):
			DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_DEBUG_KEY_INFO)); 
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_IS_OCCUPY):
			DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_POS_STS_PARAM));  
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_SET_USED):
			desc=NULL;
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_SET_IDLE):
			desc=NULL;
			break;
			
		case CE_IO_CMD(IO_CRYPT_FOUND_FREE_POS):
			DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, \
										sizeof(CE_FOUND_FREE_POS_PARAM));
			break;
			
		case CE_IO_CMD(IO_DECRYPT_PVR_USER_KEY):
			DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(CE_PVR_KEY_PARAM));
			break;
			
		default:
		{
			ALI_CE_RPC_DEBUG("CE rpc Error:invalid cmd\n");
			break;            
		}
	}
	jump_to_func(NULL, ali_rpc_call, pCeDev, CE_NPARA(3)|FUNC_CE_IOCTL, desc);
    
#else
	RET_CODE ret = RET_FAILURE;
	union
	{
		OTP_PARAM otp;
		CE_PVR_KEY_PARAM ce_pvr_key;
		CE_FOUND_FREE_POS_PARAM kpos_param;
		CE_DEBUG_KEY_INFO kdebug_param;
		CE_POS_STS_PARAM ksts_param;
	}tmp;
	
	Param p1;
	Param p2;
	Param p3;
	
	RPC_PARAM_UPDATE(p1, PARAM_IN, PARAM_UINT32, sizeof(long), (void *)&pCeDev);
	RPC_PARAM_UPDATE(p2, PARAM_IN, PARAM_UINT32, sizeof(long), (void *)&cmd);
	RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_UINT32, sizeof(long), (void *)&param);

	switch (CE_IO_CMD(cmd))
	{
		case CE_IO_CMD(IO_OTP_ROOT_KEY_GET):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.otp));
			RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_Otp_param_rpc, \
								sizeof(Otp_param_rpc), (void *)&tmp);          
			break;

		case CE_IO_CMD(IO_CRYPT_DEBUG_GET_KEY):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.kdebug_param));
			RPC_PARAM_UPDATE(p3, PARAM_INOUT, PARAM_Ce_debug_key_info_rpc, \
								sizeof(Ce_debug_key_info_rpc), (void *)&tmp);
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_IS_OCCUPY):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.ksts_param));
			RPC_PARAM_UPDATE(p3, PARAM_INOUT, PARAM_Ce_pos_status_param_rpc, \
								sizeof(Ce_pos_status_param_rpc), (void *)&tmp);
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_SET_USED):
			break;
		
		case CE_IO_CMD(IO_CRYPT_POS_SET_IDLE):         
			break;
		
		case CE_IO_CMD(IO_CRYPT_FOUND_FREE_POS):
			RPC_PARAM_UPDATE(p3, PARAM_INOUT, PARAM_Ce_found_free_pos_param_rpc, \
								sizeof(Ce_found_free_pos_param_rpc), (void *)param);            
			break;
			
		case CE_IO_CMD(IO_DECRYPT_PVR_USER_KEY):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.ce_pvr_key));
			RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_Ce_pvr_key_param_rpc, 
								sizeof(Ce_pvr_key_param_rpc), (void *)&tmp);
			break;
		
		default:
		{
			ALI_CE_RPC_DEBUG("CE rpc Error: invalid cmd=0x%x\n",cmd);
			break;            
		}
	}

	ret =  RpcCallCompletion(RPC_ce_ioctl,&p1,&p2,&p3,NULL);

	if(CE_IO_CMD(IO_CRYPT_DEBUG_GET_KEY) == CE_IO_CMD(cmd))
	{
		ali_ce_umemcpy((void *)param, &tmp, sizeof(tmp.kdebug_param));
	}
	
	if(CE_IO_CMD(IO_CRYPT_POS_IS_OCCUPY) == CE_IO_CMD(cmd))
	{
		ali_ce_umemcpy((void *)param, &tmp, sizeof(tmp.ksts_param));
	}

	return ret;
#endif
}