zte's code,first commit

Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/cp/ps/driver/inc/misc/drvs_cipher.h b/cp/ps/driver/inc/misc/drvs_cipher.h
new file mode 100644
index 0000000..f6a9cc5
--- /dev/null
+++ b/cp/ps/driver/inc/misc/drvs_cipher.h
@@ -0,0 +1,223 @@
+/***********************************************************************

+* Copyright (C) 2001, ZTE Corporation.

+* 

+* File Name: 	drvs_cipher.h

+* File Mark:  	

+* Description:  Provide cipher module Function prototype declaration

+*                and type declaration.

+* Others:  	

+* Version:  	v0.5

+* Author:  	Wangxia

+* Date:  	2008-07-06

+* 

+* History 1: 	

+* History 2: 

+**********************************************************************/

+#ifndef _DRVS_CIPHER_H

+#define _DRVS_CIPHER_H

+/**************************************************************************

+ *                                  Include files                                                                             *

+ **************************************************************************/

+

+

+

+

+/**************************************************************************

+ *                                  Macro   

+ *

+ **************************************************************************/

+ #define ZDRV_DEV_CIPHER  "cipher"

+

+ 

+ /**************************************************************************

+ *                                  Types                                                                                      *

+ **************************************************************************/

+

+/* param of cipher interface function */

+typedef struct

+{

+ UINT32  uiDirection;		 /* direction param*/

+ UINT32  uiCount;			  /* count param for encrypt and integrity check */

+ UINT8	  pcKey[16];		/* key param */

+ union

+ {

+	 UINT32  uiBearer;		 /* bearer param for encrypt */

+	 UINT32  uiFresh;		  /* fresh param for integrity check */

+ }uOthers;

+} T_ZDrvCipher_Param;

+

+ 

+typedef UINT8 aCiphKey[4][16]; 

+

+/*GPRS cipher  struct, GPRS uses GEA1/2,GEA3 algorithm*/

+ typedef struct

+{

+	UINT8 		*headerStart_ptr;

+	UINT16		headerLength;

+	UINT8 		*payloadStart_ptr;

+	UINT16		payloadLength;

+	UINT16		crcLength;

+	UINT8 		*destination_ptr;

+	UINT8  		cipherOn;

+	UINT8  		*kc_ptr;

+	UINT32 		cipherInput;

+} T_ZDrvCipher_GEACipherData;

+

+

+ typedef struct

+{

+	SINT32		Direction_CK_index;

+	UINT32		Count;

+	UINT32		Bearer;

+	UINT32		Length;	

+	UINT32		Fresh;

+	UINT32 		*Message;

+	UINT32		Direction;

+	SINT32		IK_index;

+	UINT32		MAC_I;

+}T_ZDrvCipher_RequestListType;

+

+typedef struct 

+{

+	SINT32		CiphContext;

+	SINT32		CallerId;

+	SINT32		NoRequests;

+	aCiphKey		*IK;

+	aCiphKey		*CK;

+	T_ZDrvCipher_RequestListType  RequestList[2];

+}T_ZDrvCipher_SCiphF8;

+

+typedef T_ZDrvCipher_SCiphF8  T_ZDrvCipher_SCiphF9;

+

+/**************************************************************************

+ *                           Global  Variables                                                                              *

+ **************************************************************************/

+

+

+

+	

+/**************************************************************************

+ *                           Function Prototypes                                                                        *

+ **************************************************************************/

+/**************************************************************************

+* Functin: zDrvCipher_Encrypt

+* Description: This function is used to encrypt the input data.

+* Parameters:

+*		(IN)

+*				pBufferInOut: Data buffer for input and output, and its size must be a multiple of 32

+*				uiBitLenInOut: Data length of input and output, 1-20000bit.

+*				pPara: Stuct T_ZDrvCipher_PARA

+*		(OUT)

+*				pBufferInOut: Data buffer for input and output, and its size must be a multiple of 32

+* Returns:

+*		T_ZDrv_ErrCode

+* Others:

+*		1. Param pBufferInOut is both for input and output.

+*		2. The data length of input and output is the same.

+ **************************************************************************/

+SINT32 zDrvCipher_Encrypt( CHAR *pBufferInOut, UINT32 uiBitLenInOut, T_ZDrvCipher_Param *pParam );

+

+

+/**************************************************************************

+* Functin: zDrvCipher_Integrity

+* Description: This function is used to chech the integrity.

+* Parameters:

+*	(IN)

+*				pBufferInOut: Data buffer for input and output, and its size must be a multiple of 32

+*				uiBitLenInOut: Data length of input and output.

+*				pPara: Stuct T_ZDrvCipher_PARA

+*		(OUT)

+*				pBufferInOut: Data buffer for input and output, and its size must be a multiple of 32

+* Returns:

+*	   T_ZDrv_ErrCode

+* Others:

+*		1. Param pBufferInOut is both for input and output.

+*		2. The data length of output is 32bit.

+ **************************************************************************/

+SINT32 zDrvCipher_Integrity( CHAR *pBufferInOut, UINT32 uiBitLenIn, T_ZDrvCipher_Param *pParam );

+

+/***************************************************************************************

+* Function: zDrvCipher_GprsUintInitialise

+* Description: This function is used to initialize  ciphering semaphoreme,olny using for GPRS communication

+* Parameters: 

+*   Input:

+*		None    

+*   Output: 

+*		None

+* Returns:   

+*		None

+***************************************************************************************/

+VOID zDrvCipher_GprsUnitInitialise (VOID);

+

+

+/***************************************************************************************

+* Function: zDrvCipher_GprsUnitEncode

+* Description: This function is used to encode data of uplink,olny using for GPRS communication

+* Parameters: 

+*   Input:

+*		pointer of  T_ZDrvCipher_GEACipherData struct   

+*   Output: 

+*		None

+* Returns:   

+*		None

+***************************************************************************************/

+VOID zDrvCipher_GprsUnitEncode(T_ZDrvCipher_GEACipherData * ciData_ptr);

+

+/***************************************************************************************

+* Function: zDrvCipher_GgprsUnitEncode

+* Description: This function is used to encode data of uplink,olny using for GPRS communication

+* Parameters: 

+*   Input:

+*		pointer of  T_ZDrvCipher_GEACipherData struct   

+*   Output: 

+*		None

+* Returns:   

+*		None

+***************************************************************************************/

+VOID zDrvCipher_GgprsUnitEncode(T_ZDrvCipher_GEACipherData * ciData_ptr);

+

+

+/***************************************************************************************

+* Function: zDrvCipher_GprsUnitDecode

+* Description: This function is used to encode data of downlink,olny using for GPRS communication

+* Parameters: 

+*   Input:

+*		pointer of  T_ZDrvCipher_GEACipherData struct   

+*   Output: 

+*		None

+* Returns:   

+*		None

+***************************************************************************************/

+BOOL zDrvCipher_GprsUnitDecode(T_ZDrvCipher_GEACipherData * ciData_ptr);

+

+/****************************************************************************************

+* Function: zDrvCipher_F8

+* Description: This function is used to cipher data using f8 algorithm which be used in UMTS communication

+* Parameters: 

+*   Input:

+*		pointer of  T_ZDrvCipher_SCiphF8 struct   

+*   Output: 

+*		None

+* Returns:   

+*		1: faild

+*		0:success

+****************************************************************************************/

+BOOL zDrvCipher_F8(T_ZDrvCipher_SCiphF8  *f8_ctrl);

+

+

+/***************************************************************************************

+* Function: zDrvCipher_F9

+* Description: This function is used to cipher data using f9 algorithm which be used in UMTS communication

+* Parameters: 

+*   Input:

+*		pointer of  T_ZDrvCipher_GEACipherData struct   

+*   Output: 

+*		None

+* Returns:   

+*		None

+***************************************************************************************/

+VOID  zDrvCipher_F9(T_ZDrvCipher_SCiphF9  *f9_ctrl);

+

+

+#endif	/* _CIPHER_API_H */

+