int WPSRegistrar::AskForPin()
{
	if (g_regProtocol.UseStaticPIN()) { // in this mode, use static PIN value known to Registrar already
		return SendM2();
	}
	printf("\n*********\nThe Device should be displaying its PIN.  Please enter it now: ");
	unsigned long pin;
	int res = scanf("%u",&pin);
	if (res == 1 && pin < 100000000 && g_regProtocol.ValidateChecksum(pin)) { // okay
		SetPIN(pin);
		return SendM2();
	} else {
		printf("Invalid PIN number entered %d\n",pin); 
		return(init);
	}
}
示例#2
0
jint __MIX_PREFIX_FUNC_PASTE(MIX_PREFIX_UPAPI_FUNC,SetPIN(JNIEnv* env, jobject javaThis, jstring str_pwd_ori, jstring str_pwd_new, jint i_usr_type))
{
	if(!str_pwd_ori)
	{
		setLastErrInfo(EStateErrorInvalidArg);

		return EStateErrorInvalidArg;
	}

	if(!str_pwd_new)
	{
		setLastErrInfo(EStateErrorInvalidArg);

		return EStateErrorInvalidArg;
	}

	return (jint)SetPIN( (* env)->GetStringUTFChars(env, str_pwd_ori, 0),  (* env)->GetStringUTFChars(env, str_pwd_new, 0) ,(int)i_usr_type);
}
示例#3
0
//Funcion con maquina de estados
int DHT_Mde(void){
	static uint8_t estado=0;
	static uint8_t byte[5];
	static uint8_t i=0,j=7;//i recorre los bytes y j los bits de cada byte
	uint8_t neg=0;
	uint16_t checkmio=0;
	uint16_t hume=0,temp=0,check;
	uint16_t ent_temp,dec_temp,ent_hume,dec_hume; //partes enteras y partes decimales



	switch(estado){
		case 0:
			SetDIR (DHT_DATA , SALIDA); //LO HAGO SALIDA
			SetPIN(DHT_DATA,0);
			TmrStartM(EVENTOM1,TM1);//ARRANCO TIMER QUE ESPERA 25ms
			estado=1;
			break;
		case 1:
			if(VencioESPERA25ms){
				SetPIN(DHT_DATA,1); //PONGO UN UNO A LA SALIDA
				TmrStartM(EVENTOM2,TM2);//ARRANCO TIMER QUE espera 30us
				estado=2;
			}
			break;
		case 2:
			if(VencioESPERA30us){
				SetDIR (DHT_DATA , ENTRADA);//LO HAGO ENTRADA
				TmrStartM(EVENTOM3,TM3);//ARRANCO TIMER QUE espera 20us
				estado=3;
			}
			break;
		case 3:
			if(VencioESPERA20us){
				TmrStartM(EVENTOM4,TM4);//ARRANCA MI TIMEOUT de 0,5s
				estado=4;
			}
			break;
		case 4:
			//Primero espero un uno...
			if(GetPIN(DHT_DATA,1))
			{
				estado=5;
				TmrStopM(EVENTOM4);//paro el timer 0,5s
				TmrStartM(EVENTOM4,TM4);//lo reinicio a 0,5s
			}//termina el 0 de 80us
			if(VENCIOTimeout)//sigo esperando o ya paso el tiempo?
			{
				estado=0;
				flagLeerMensajeNuevo=0;//termino lectura
				return 1; //DEVUELVO ERROR
			}
			break;
		case 5:
			if(GetPIN(DHT_DATA,0)) //espero un 0
			{
				estado=7; //tengo q ir esperar el 1
				TmrStopM(EVENTOM4);//paro el timer 0,5s

			}//termina el 1 de 80us
			if(VENCIOTimeout)//sigo esperando o ya paso el tiempo?
			{
				estado=0;
				flagLeerMensajeNuevo=0;//termino lectura
				return 1; //DEVUELVO ERROR
			}
			break;
		case 6:	//espera un 0
			if(GetPIN(DHT_DATA,0))
			{
				estado=7;
			}
			if(VENCIOTimeout)//sigo esperando o ya paso el tiempo?
			{
				estado=0;
				flagLeerMensajeNuevo=0;//termino lectura
				return 1; //DEVUELVO ERROR
			}
			break;
		case 7: //espero un 1
			if(GetPIN(DHT_DATA,1))
			{
				estado=8;
				TmrStartM(EVENTOM5,TM5);//ARRANCA TIMER QUE espera 40us
			} //llego el 1 de transmision
			if(VENCIOTimeout)//sigo esperando o ya paso el tiempo?
			{
				estado=0;
				flagLeerMensajeNuevo=0;//termino lectura
				return 1; //DEVUELVO ERROR
			}
			break;
		case 8:
			if(VencioESPERA40us){
				if(GetPIN(DHT_DATA,1))
				{
					byte[i]|=(uint8_t)0x01<<j;//pongo un uno en la posicion
					estado=6; //espero q se haga cero
					TmrStartM(EVENTOM4,TM4);//lo reinicio a 0,5s
				}
				else{ //la lectura fue un 0, espero al proximo 1
					estado=7;
					TmrStartM(EVENTOM4,TM4);//lo reinicio a 0,5s
				}
				j--;
				if(j>7) //era 0 y ahora hizo overflow
				{
					i++;
					j=7;
					if(i==5){
						estado=9; //termino la lectura de los 5 bytes
					}
				}
			}
			break;
		case 9:
			checkmio=byte[0]+byte[1]+byte[2]+byte[3];
			checkmio&=0x00ff;
			//anido los datos
			hume=byte[0];
			hume=hume<<8;
			hume|=byte[1];
			temp=byte[2];
			temp=temp<<8;
			temp|=byte[3];
			check=byte[4];
			//checkeo si lo que me llego es correcto
			if(checkmio!=check)
			{
				estado=0;
				flagLeerMensajeNuevo=0;//termino lectura
				return 1; //suma incorrecta

			}
			//datos correctamente recibidos
			//estan en hume y temp
			// checkeo si la temperatura es negativa
			if(temp & 0x8000)//si esto es verdad es negativa
			{
				neg=1;//activo un flag
				temp=temp & 0x7FFF;//le saco el uno del bit mas significativo que indica negatividad
			}
			//decodifico la información
			dec_temp=temp%10;
			ent_temp=temp/10;
			dec_hume=hume%10;
			ent_hume=hume/10;
			//La coloco en el buffer que manipularán otras funciones:
			Humestring[6] = '\0';//para que puea ser manipulado como string
			Humestring[5] = 'H';
			Humestring[4] = ' ';
			Humestring[3] = '0'+dec_hume;
			Humestring[2] = ',';
			for (i=1;i>=0 && i<=1;i--)
			{
			   	Humestring[i]='0'+ent_hume%10;
			   	ent_hume=ent_hume/10;
			}

			Tempstring[7] = '\0';//para que puea ser manipulado como string
			Tempstring[6] = 'C';
			Tempstring[5] = ' ';
			Tempstring[4] = '0'+dec_temp;
			Tempstring[3] = ',';
			for (i=2;i>=1 && i<=2;i--)
			{
			   	Tempstring[i]='0'+ent_temp%10;
			   	ent_temp=ent_temp/10;
			}
			if(neg==1)//si es negativo le agrego un menos
			{
				Tempstring[0]='-';
			}
			else{
				Tempstring[0]=' ';//si es positivo dejo un espacio
			}
			estado=0; //para la proxima vez que entre
			i=0;
			j=7;
			byte[0]=byte[1]=byte[2]=byte[3]=byte[4]=0;
			flagLeerMensajeNuevo=0;//termino la lectura
			break;
	}
	return 0; //lectura correcta por el momento
}
void EINT0_IRQHandler(void)
{
	EXTINT = 0x0F;
	SetPIN(PORT0,28,0);
}
示例#5
0
uint8_t TecladoHW (void)
{
	uint8_t Codigo = NO_KEY;

	SetPIN(FILA0, ON); SetPIN(FILA1, OFF); SetPIN(FILA2, OFF); SetPIN(FILA3, OFF);
	SetPIN(FILA0, ON); SetPIN(FILA1, OFF); SetPIN(FILA2, OFF); SetPIN(FILA3, OFF);
	SetPIN(FILA0, ON); SetPIN(FILA1, OFF); SetPIN(FILA2, OFF); SetPIN(FILA3, OFF);

	if ( GetPIN(COLUMNA0, ACTIVO_ALTO) )
		return SW4;

	if ( GetPIN(COLUMNA1, ACTIVO_ALTO) )
		return SW5;


	SetPIN(FILA0, OFF); SetPIN(FILA1, ON); SetPIN(FILA2, OFF); SetPIN(FILA3, OFF);
	SetPIN(FILA0, OFF); SetPIN(FILA1, ON); SetPIN(FILA2, OFF); SetPIN(FILA3, OFF);
	SetPIN(FILA0, OFF); SetPIN(FILA1, ON); SetPIN(FILA2, OFF); SetPIN(FILA3, OFF);

	if ( GetPIN(COLUMNA0, ACTIVO_ALTO) )
		return SW1;

	if ( GetPIN(COLUMNA1, ACTIVO_ALTO) )
		return SW8;


	SetPIN(FILA0, OFF); SetPIN(FILA1, OFF); SetPIN(FILA2, ON); SetPIN(FILA3, OFF);
	SetPIN(FILA0, OFF); SetPIN(FILA1, OFF); SetPIN(FILA2, ON); SetPIN(FILA3, OFF);
	SetPIN(FILA0, OFF); SetPIN(FILA1, OFF); SetPIN(FILA2, ON); SetPIN(FILA3, OFF);

	if ( GetPIN(COLUMNA0, ACTIVO_ALTO) )
		return SW3;

	if ( GetPIN(COLUMNA1, ACTIVO_ALTO) )
		return SW6;

	SetPIN(FILA0, OFF); SetPIN(FILA1, OFF); SetPIN(FILA2, OFF); SetPIN(FILA3, ON);
	SetPIN(FILA0, OFF); SetPIN(FILA1, OFF); SetPIN(FILA2, OFF); SetPIN(FILA3, ON);
	SetPIN(FILA0, OFF); SetPIN(FILA1, OFF); SetPIN(FILA2, OFF); SetPIN(FILA3, ON);

	if ( GetPIN(COLUMNA0, ACTIVO_ALTO) )
		return SW2;

	if ( GetPIN(COLUMNA1, ACTIVO_ALTO) )
		return SW7;


	if ( GetPIN(KEY3, ACTIVO_BAJO) )
	if ( GetPIN(KEY3, ACTIVO_BAJO) )
	if ( GetPIN(KEY3, ACTIVO_BAJO) )
		return SW9;


	if ( GetPIN(KEY2, ACTIVO_BAJO) )
	if ( GetPIN(KEY2, ACTIVO_BAJO) )
	if ( GetPIN(KEY2, ACTIVO_BAJO) )
		return SW10;


	if ( GetPIN(KEY1, ACTIVO_BAJO) )
	if ( GetPIN(KEY1, ACTIVO_BAJO) )
	if ( GetPIN(KEY1, ACTIVO_BAJO) )
		return SW11;


	if ( GetPIN(KEY0, ACTIVO_BAJO) )
	if ( GetPIN(KEY0, ACTIVO_BAJO) )
	if ( GetPIN(KEY0, ACTIVO_BAJO) )
		return SW12;


	return Codigo;
}
示例#6
0
文件: main.c 项目: stoneskill/mix-n2
int main()
{
	int ulRet = 0;

	char data_value[2048] = {0};

	int data_len = 2048;

	char szDBPath [1024] = {0};

	int i = 0;
	int j = 0;
	unsigned char dataKey[16];
	unsigned char keyIV[10];
	unsigned char input[48] ;
	unsigned char output[33];
	unsigned char output1[33];
	unsigned int outputlen = 1024, outputlen1 = 1024;
	int keyPairCnt = 0;

	//for (i = 0; i < 16;i++)
	//{
	//	dataKey[i] = i;
	//}

	//for (i = 0; i < 10;i++)
	//{
	//	keyIV[i] = i;
	//}

	//funcddd((unsigned char *)"MHgCIGujeBGA0OXGoh1WYU7LKorsgKoiHqDQMn4ih1elxxDuAiB89t9D1kA4y95TThSBSjdZTMyToc1JBMMbj+r+yi9u6AQgIuMHlcX/N7mKvOfvU6jcYEeO9E+CM34VVQSQd7T1+MMEEIBRaH9mAh7qTuOPDVIrY14=",strlen("MHgCIGujeBGA0OXGoh1WYU7LKorsgKoiHqDQMn4ih1elxxDuAiB89t9D1kA4y95TThSBSjdZTMyToc1JBMMbj+r+yi9u6AQgIuMHlcX/N7mKvOfvU6jcYEeO9E+CM34VVQSQd7T1+MMEEIBRaH9mAh7qTuOPDVIrY14="));

	//funcddd(0,1);


	strcpy((char *)input, "work hard");

	//cryptoWithSeckey(dataKey,sizeof(dataKey),
	//	keyIV,sizeof(keyIV),
	//	0x00001082,0,
	//	input,48,
	//	output,&outputlen);

	//outputlen = 1024;

	//cryptoWithSeckey(dataKey,sizeof(dataKey),
	//	keyIV,sizeof(keyIV),
	//	0x00001082,1,
	//	output,48,
	//	output1,&outputlen1);

	setLicense("1","1");

	setSystemDBDir("d:/nss_db");


	for(i; i < 1000000; i++)
	{
		sprintf(szDBPath, "%s%d/", "d:/nss_db/", i);

		if( _mkdir(szDBPath) == 0 )
		{
			if (0 == i % 1)
			{
				printf("mkdir %s OK\n", szDBPath);
			}
		}
		else
		{
			printf("mkdir %s ERR\n", szDBPath);
		}

		setSystemDBDir(szDBPath);

		ulRet = verifyPIN("","12345678", 0);

		//{
		//	int certCnt;

		//	char nickname[255] = {0};

		//	char buffer[1024*4];

		//	ulRet = filterCert(&certCnt,"","","",0,0);

		//	getCertNickName(nickname, 0);

		//	ulRet = filterCert(&certCnt,"","","",0,0);

		//	ulRet = encryptMessage(buffer, "abc","SM3",1);

		//	ulRet = decryptMessage(buffer, buffer,"SM3",1);

		//	ulRet = signMessage(buffer, "abc",0,"SM3",0);

		//	ulRet = verifyMessage("abc",buffer,0,"SM3",0);

		//	certCnt = 1;
		//}

		//ulRet = InitPIN("0Mozilla", "0Mozilla");

		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);

		//ulRet = InitPIN("0Mozilla", "0Mozilla");

		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);

		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);
		//ulRet = verifyPIN("","0Mozilla1", 0);

		//ulRet = verifyPIN("","0Mozilla1", 0);

		if (0 == ulRet)
		{

		}
		else if (3 != ulRet)
		{
			printf("%s err\n", "verifyPIN");
			break;
		}
		else
		{
#if defined(PKCS11_USE_SO_PIN)
			ulRet = SetPIN("","12345678",0);

			if (ulRet)
			{
				printf("%s err\n", "SetPIN");
				break;
			}

			ulRet = InitPIN("12345678", "12345678");
			if (ulRet)
			{
				printf("%s err\n", "InitPIN");
				break;
			}
#else
			ulRet = changePIN("", "", "0Mozilla");
			if (ulRet)
			{
				printf("%s err\n", "InitPIN");
				break;
			}
#endif
		}

		for( j = 0; j < 1; j++)
		{
			// 0
			ulRet = verifyPIN("","12345678", 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			//test_process("0Mozilla", 1);


			{

				char * tt = "MIIB0zCCAXigAwIBAgICNTUwCgYIKoEcz1UBg3UwEzERMA8GA1UEAx4Ilj9lr4SCgqwwHhcNMTYwNjIwMTA0NzE0WhcNMTYwNzEwMTA0NzE0WjBSMQ4wDAYDVQQKEwV0cnVzdDEOMAwGA1UECxMFdHJ1c3QxHzAdBgkqhkiG9w0BCQEWEDI0NDU0MDQ5OUBxcS5jb20xDzANBgNVBAMMBsDux7/HvzBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABKfvhpW55Z/E4DIA+sUof7EeVUkZJuI5DDSrdG4Zf7LaCDEzBb8CJ0Gvlls0OxkoPGIS4ECKMrBpodjjcX7HWyijfTB7MA8GA1UdEwEB/wQFMAMCAQEwHQYDVR0OBBYEFJ0dh7sd1NP3L0/mVZLC1687ww6tMDwGA1UdIwQ1MDOAFPWFFozl/60F0a0Vw5b/98Fz4bTToRekFTATMREwDwYDVQQDHgiWP2WvhIKCrIICRkYwCwYDVR0PBAQDAgbAMAoGCCqBHM9VAYN1A0kAMEYCIQCmJIXfnVUYW2WdP1SwZeeUAVXDnORKoppe1dBudKTaOAIhAIbeAZ+ndEPRAr6hQDhjYIAz4gnFPM28DOP/gxUTPgk0";
				int certCnt;

				char nickname[255] = {0};

				char * filepw = "12345678";
				
				char * filename = "sm2.pfx";

				char buffer[1024*4];
				char pfxBuffer[1024*4];
				int pfxBufferLen = 1024*4;

				FILE_READ("","SN-100000100000004.pfx",pfxBuffer,&pfxBufferLen);

				//importCert(0,tt);

				//ulRet = filterCert(&certCnt,"","","",0,0);
				ulRet = filterCert(&certCnt,"","","",0,0);

				getCertNickName(nickname, 0);

				//ulRet = FilePfxExport_main(pfxBuffer,&pfxBufferLen,filepw,nickname,NULL);

				//FILE_WRITE("","ppk.pfx",pfxBuffer,pfxBufferLen);

				ulRet = FilePfxImport_main(pfxBuffer, pfxBufferLen,filepw,nickname,NULL);

				ulRet = filterCert(&certCnt,"","","",0,0);

				ulRet = encryptMessage(buffer, "abc","SM3",1);

				ulRet = decryptMessage(buffer, buffer,"SM3",1);

				ulRet = signMessage(buffer, "abc",0,"SM3",0);

				ulRet = verifyMessage("abc",buffer,0,"SM3",0);

				certCnt = 1;
			}

			return 0;


			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}

			



#if defined(PKCS11_USE_SO_PIN)
			// 1
			ulRet = SetPIN("0Mozilla",szDBPath,0);
			if (ulRet)
			{
				printf("%s err\n", "SetPIN");
				break;
			}

			ulRet = verifyPIN("","0Mozilla", 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 2048, "RSA");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}

			//2
			ulRet = SetPIN("0Mozilla",szDBPath,1);
			if (ulRet)
			{
				printf("%s err\n", "SetPIN");
				break;
			}

			ulRet = verifyPIN("",szDBPath, 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}


			//3
			ulRet = SetPIN(szDBPath, "0Mozilla",0);
			if (ulRet)
			{
				printf("%s err\n", "SetPIN");
				break;
			}

			ulRet = verifyPIN("",szDBPath, 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}

			//4
			ulRet = InitPIN("0Mozilla","0Mozilla");
			if (ulRet)
			{
				printf("%s err\n", "InitPIN");
				break;
			}

			ulRet = verifyPIN("","0Mozilla", 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}
#else
			ulRet = SetPIN("0Mozilla","test",1);
			if (ulRet)
			{
				printf("%s err\n", "SetPIN");
				break;
			}

			ulRet = verifyPIN("","test", 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}

			ulRet = changePIN("", "test","0Mozilla");
			if (ulRet)
			{
				printf("%s err\n", "SetPIN");
				break;
			}

			ulRet = verifyPIN("","0Mozilla", 0);
			if (ulRet)
			{
				printf("%s err\n", "verifyPIN");
				break;
			}

			ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");
			if (ulRet)
			{
				printf("%s err\n", "genCSR");
				break;
			}
#endif
			printf("current j = %d\n" , j);
		}
		
		//ulRet = genCSR( data_value, "", "李强强", "*****@*****.**", "trust", "trust", 256, "SM2");

		//ulRet = enumKeyPair(&keyPairCnt);

		//{

		//	char * digital = "MHgCIF1PHwjtpIM8tOnxvBwVXVt6xJoyAgBZqb7H4wE0SN9RAiDsiL8W8TLVmslY57rUC50tGQbq3uHIMVBy6++MrWyo0AQg/UR08eazuJPhNDfIkN3g5O18iqj1J6ekoA9pdekv0/wEEKOO0iOf0QpP7lTgnVtV0/o=";
		//	char * iv = "hqF+O1JTu1xnOHKZsrpMmA==";
		//	char * key = "nGameazgInZiRHBycWzXfkH3FtzSM8FVDTn4MVRjAh+TikzDtd1K4FkPzghs58zh";

		//	importDEPrivateKey(0,digital,0x00001082,iv,key);



		//}



		{
			//char * tt = "MIICAjCCAaigAwIBAgIBATAKBggqgRzPVQGDdTArMQ0wCwYDVQQDEwRyb290MRowGAYJKoZIhvcNAQkBFgtyb290QGNhLmNvbTAeFw0xNTExMTMwNjEyMDJaFw0xNjAxMDcwNjEyMDJaMFIxDjAMBgNVBAoTBXRydXN0MQ4wDAYDVQQLEwV0cnVzdDEfMB0GCSqGSIb3DQEJARYQMjQ0NTQwNDk5QHFxLmNvbTEPMA0GA1UEAwwGwO7Hv8e/MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEzx3tRmgaUr0d0Q9NcoZQ26Srn/g3TyooA20MSiDRKgOm9HnYp4bkYbvOQki25vz5hdUV+KAR/BrLgW8474zIeqOBlTCBkjAPBgNVHRMBAf8EBTADAgEBMB0GA1UdDgQWBBSe2mE9d+LGYPimZ7Dstz5LgW6i/DBTBgNVHSMETDBKgBRT9Im/OTjF4gLZpb1RTRwYg9RhVaEvpC0wKzENMAsGA1UEAxMEcm9vdDEaMBgGCSqGSIb3DQEJARYLcm9vdEBjYS5jb22CAQEwCwYDVR0PBAQDAgbAMAoGCCqBHM9VAYN1A0gAMEUCIEaMK0VHMuWoUQZsYF8I8/J0CUEIA8zlHmLoFY5e6MFlAiEAotRlzDuUDk/b0mqjEBTagZMJxbuUToHgvFbKnAht6Xc=";

			//int certCnt;

			//char buffer[10000];

			//importCert(0,tt);

			//ulRet = filterCert(&certCnt,"","","",0,0);


			//ulRet = signMessage(buffer, "abc",0,"SM3",1);

			//ulRet = verifyMessage("abc",buffer,0,"SM3",1);

			//certCnt = 1;
		}

		{
			//unsigned char datakey[32] = {0xC2,0x17,0x51,0x1E,0x23,0x5A,0x2A,0xCE,0x72,0x15,0xCF,0x7F,0xE6,0x26,0x7D,0xD1,0xBB,0x1C,0x57,0x21,0x4A,0xC9,0x8A,0xFF,0x34,0x68,0x02,0xEC,0x28,0x68,0xDC,0xF3};

			//ulRet = importSM2PrivateKey(datakey, 32);
		}


		if (0 == i%1)
		{
			unsigned char in_value[32] = {0};
			unsigned int in_len = 32;
			unsigned int out_len = 256;
			unsigned char out_value[256] = {0};

			int certID = 0;

			char nickname[100] = {0};

			memcpy(in_value,"112233445566", 12);

			ulRet = enumKeyPair(&keyPairCnt);
			if (ulRet)
			{
				printf("%s err\n", "enumKeyPair");
				break;
			}

			ulRet = cryptoWithKeyPairID(0,0,in_value, in_len,out_value,&out_len);
			if (ulRet)
			{
				printf("%s err\n", "cryptoWithKeyPairID");
				break;
			}
			memset(in_value, 0, in_len);
			in_len *= 2;
			ulRet = cryptoWithKeyPairID(0,1,out_value, out_len,in_value,&in_len);
			if (ulRet)
			{
				printf("%s err\n", "cryptoWithKeyPairID");
				break;
			}

			ulRet = sgnvfyMsgWithKeyPairID(0,0,320, in_value, in_len,out_value,&out_len);
			if (ulRet)
			{
				printf("%s err\n", "sgnvfyMsgWithKeyPairID");
				break;
			}

			ulRet = sgnvfyMsgWithKeyPairID(0,1,320,in_value, in_len,out_value,&out_len);

			FILE_LOG_HEX("cc.txt",out_value,(unsigned long)out_len);

			if (ulRet)
			{
				printf("%s err\n", "sgnvfyMsgWithKeyPairID");
				break;
			}

			printf("%s %d\n", "enumKeyPair", keyPairCnt);

		}

	}

	printf("number %d is ok\n",i);

	printf("input any key to close\n",i);

	getchar();

	return 0;
}