Index: yc_crypt.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: yc_des.c
===================================================================
--- /YC3121_SDK/fw/crypt/yc_des.c	(revision 630)
+++ /YC3121_SDK/fw/crypt/yc_des.c	(working copy)
@@ -26,9 +26,9 @@
 	DES_KeyTypeDef key_null= {0,0,0,0,0,0,0,0};
 	if(key == NULL)
 		return RET_DES_KEY_IS_NULL;
-	if (mem_rollcmp_char(key,key_null,8, startflag) != CMPOK)
-		return RET_DES_KEY_IS_OK;
-	return RET_DES_KEY_IS_NULL;
+	//if (mem_rollcmp_char(key,key_null,8, startflag) != CMPOK)
+		//return RET_DES_KEY_IS_OK;
+	return RET_DES_KEY_IS_OK;
 }
 
 void des_setkey(uint8_t *key1,uint8_t *key2,uint8_t *key3, uint32_t rand)
@@ -609,12 +609,12 @@
 		}
 		else
 			return RET_DES_PACK_MODE_ERROR;
-			
+
 	if(des_checkkey(key->k2,rand_key) ==RET_DES_KEY_IS_NULL &&
 		des_checkkey(key->k3,rand_key) ==RET_DES_KEY_IS_NULL && 
 			des_checkkey(key->k1,rand_key) ==RET_DES_KEY_IS_NULL)
 	return RET_DES_KEY_IS_NULL;
-
+	
 	switch(type_mode)
 	{
 		case DES_TYPE_TDES_DEC:
Index: yc_rsa.c
===================================================================
--- /YC3121_SDK/fw/crypt/yc_rsa.c	(revision 630)
+++ /YC3121_SDK/fw/crypt/yc_rsa.c	(working copy)
@@ -795,7 +795,7 @@
   * @retval				:RET_RSA_SUCCESS or RET_RSA_FAILURE
   */
 
-uint32_t  RSA_Private_crt(uint8_t *output, uint8_t *input, RSA_PrivateKeyTypeDef *para,rng_callback f_rng, void *p_rng)
+uint32_t  RSA_Private_crt_True(uint8_t *output, uint8_t *input, RSA_PrivateKeyTypeDef *para,rng_callback f_rng, void *p_rng)
 {
 	calc_operand operand;
 	uint32_t b_len;
@@ -1533,6 +1533,31 @@
 	}
 }
 
+
+/**
+  * @method	RSA_Private
+  * @brief	Raw RSA private-key operation. Useing CRT Algorithm
+  * @param	output		:output data buffer
+  * @param	input		:input data buffer
+  * @param	key			:RSA private key
+  * @param	f_rng		:true random number generation function point
+  * @param	p_rng		:true random number generation para
+  * @retval				:RET_RSA_SUCCESS or RET_RSA_FAILURE
+  */
+uint32_t  RSA_Private_crt(uint8_t *output, uint8_t *input, RSA_PrivateKeyTypeDef *para,rng_callback f_rng, void *p_rng)
+{
+	uint32_t RSA_CLK = 0;
+	uint32_t RSA_RTN = RET_RSA_FAILURE;
+	
+	RSA_CLK = SYSCTRL_RSACLK;
+	SYSCTRL_RSACLK = 7;
+	
+	RSA_RTN = RSA_Private_crt_True(output,input,para,f_rng,p_rng);
+	
+	SYSCTRL_RSACLK = RSA_CLK;
+	return RSA_RTN;
+}
+
 #if 1
 /*
 ***************************************************************************
@@ -1978,7 +2003,9 @@
 uint32_t RSA_Private_Func(uint8_t *output,uint8_t *input, RSA_PrivateKeyTypeDef2 *para,rng_callback f_rng, void *p_rng)
 {
 	RSA_PrivateKeyTypeDef pri_key;
-
+	uint32_t RSA_CLK = 0;
+	uint32_t RSA_RTN = RET_RSA_IMPLEMENT_ERROR;
+	
 	pri_key.bytes = para->bytes;
 	memcpy(pri_key.e, para->e, sizeof(pri_key.e));
 	memcpy(pri_key.d, para->d, sizeof(pri_key.d));
@@ -1988,8 +2015,16 @@
 	pri_key.p_xor = 0;
 	memset(pri_key.q,0,sizeof(pri_key.q));
 	pri_key.q_xor = 0;
+	
+	RSA_CLK = SYSCTRL_RSACLK;
+	SYSCTRL_RSACLK = 7;
+	
 	RSA_GetPrativeKey_C_Q(&pri_key,f_rng,p_rng);
-	return 	RSA_Private_Standard(output,input,&pri_key,f_rng,p_rng);
+	RSA_RTN = RSA_Private_Standard(output,input,&pri_key,f_rng,p_rng);
+	
+	SYSCTRL_RSACLK = RSA_CLK;
+	
+	return 	RSA_RTN;
 }
 
 
