コード例 #1
0
ファイル: Flash.cpp プロジェクト: FunkyFlier/OpenCopterV3_0
void LogOutput(){
  while(1){
    Radio();
    if (eraseLogs == true){
      if(VerifyWriteReady() == true){
        eraseLogs = false;
        while(VerifyWriteReady() == false){
          Radio();
        }
        FlashEraseChip();
        while(VerifyWriteReady() == false){
          Radio();
        }
        SendEraseComplete();
      }
    }
    if (dumpLogs == true){
      flashOutputPacketNumber.val = 0;
      LogDump();
      SendDumpComplete();
      dumpLogs = false;
    }
    /*if (logRequested == true){
      logRequested = false;
      RequestedLogDump(requestedNumber);
    }*/

  }
}
コード例 #2
0
ファイル: log.cpp プロジェクト: github188/pusdk
void MSLogDumpCB(int type,const char* logMessage,const int size)
{
	char strTime[128] = "\0";
	char strLog[4096] = "\0";
	memset(strTime,0,sizeof(strTime));
	memset(strLog,0,sizeof(strLog));
	getLocalTime(strTime);

	sprintf(strLog,"%s: %s\n",strTime,logMessage);
	
	switch((MS_LOG_TYPE)type)
	{
	case MS_LOG_NONE:
		break;
	case MS_LOG_SCREEN:
		{
			printf("%s",strLog);
		}
		break;
	case MS_LOG_FILE:
		{
			//here check the current log file's size,if big than 5M,change to next one
			if (checkLogFileSize() != 0)
				return;
			fwrite(strLog,1,strlen(strLog),g_MSLog.logfd);
			fflush(g_MSLog.logfd);
		}
		break;
	case MS_LOG_NET:
		{
			int ret = sendto(g_sock, strLog, strlen(strLog), 0,
				(struct sockaddr *)&lServerAddr, sizeof(lServerAddr));
		}
#if 0
	case MS_LOG_MEMORY:
		{
			LogDump(g_MSLog.logfd,g_MSLog.pMemBuffer,strLog,strlen(strLog));
		}
		break;
#endif

	default:
		{
			//here check the current log file's size,if big than 5M,change to next one
			if (checkLogFileSize() != 0)
				return;
			fwrite(strLog,1,strlen(strLog),g_MSLog.logfd);
			fflush(g_MSLog.logfd);
		}
		break;
	}
}
コード例 #3
0
ファイル: Acleanout.cpp プロジェクト: SiowCY/EhTrace
int wmain(int argc, wchar_t* argv[])
{
	wchar_t* OutputPath = NULL;

	SetConsoleCtrlHandler((PHANDLER_ROUTINE)CtrlHandler, TRUE);
	ConnectLogBuffer(STRACE_LOG_BUFFER_SIZE);
	
	if (argc < 2)
		LogDump();
	else if(argc == 2)
	{
		OutputPath = _wcsdup(argv[1]);
		wprintf(L"output file is %s\n", OutputPath);
		LogToFile(OutputPath);
	}
	else
	{
		wprintf(L"no arguments will dump logs to screen.\n");
		wprintf(L"supply a file path to dump to a file.\n");
		return -1;
	}

	return 0;
}
コード例 #4
0
ファイル: cryptoops.cpp プロジェクト: Blandinium/eid-mw
DWORD WINAPI   CardSignData
(
    __in      PCARD_DATA          pCardData,
    __in      PCARD_SIGNING_INFO  pInfo
)
{
   DWORD    dwReturn       = 0;

   BCRYPT_PKCS1_PADDING_INFO  PkcsPadInfo;

   LogTrace(LOGTYPE_INFO, WHERE, "Enter API...");

   /********************/
   /* Check Parameters */
   /********************/
   if ( pCardData == NULL )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pCardData]");
      CLEANUP(SCARD_E_INVALID_PARAMETER);
   }
   if ( pInfo == NULL )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo]");
      CLEANUP(SCARD_E_INVALID_PARAMETER);
   }

   if ( ( pInfo->dwVersion != CARD_SIGNING_INFO_BASIC_VERSION   ) &&
        ( pInfo->dwVersion != CARD_SIGNING_INFO_CURRENT_VERSION ) )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->dwVersion][0x%X]", pInfo->dwVersion);
      CLEANUP(ERROR_REVISION_MISMATCH);
   }

   if ( pInfo->pbData == NULL )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->pbData]");
      CLEANUP(SCARD_E_INVALID_PARAMETER);
   }

LogTrace(LOGTYPE_ERROR, WHERE, "[pInfo->bContainerIndex][0x%X]", pInfo->bContainerIndex);
   if ( ( pInfo->bContainerIndex != 0 ) &&
        ( pInfo->bContainerIndex != 1 ) )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->bContainerIndex]");
      CLEANUP(SCARD_E_NO_KEY_CONTAINER);
   }
LogTrace(LOGTYPE_ERROR, WHERE, "[pInfo->dwKeySpec][0x%X]", pInfo->dwKeySpec);
   if ( pInfo->dwKeySpec != AT_SIGNATURE )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->dwKeySpec]");
      CLEANUP(SCARD_E_INVALID_PARAMETER);
   }

LogTrace(LOGTYPE_ERROR, WHERE, "[pInfo->dwSigningFlags][0x%X]", pInfo->dwSigningFlags);
   if ( pInfo->dwSigningFlags == 0xFFFFFFFF )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->dwSigningFlags]");
      CLEANUP(SCARD_E_INVALID_PARAMETER);
   }

   if ( ( pInfo->dwSigningFlags & CARD_BUFFER_SIZE_ONLY ) == CARD_BUFFER_SIZE_ONLY)
   {
      LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwSigningFlags: CARD_BUFFER_SIZE_ONLY");

      pInfo->cbSignedData = 128;
      CLEANUP(SCARD_S_SUCCESS);
   }

   if ( ( pInfo->dwSigningFlags & CARD_PADDING_INFO_PRESENT ) == CARD_PADDING_INFO_PRESENT)
   {
      LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwSigningFlags: CARD_PADDING_INFO_PRESENT");
      switch(pInfo->dwPaddingType)
      {
      case CARD_PADDING_PKCS1:
         LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: CARD_PADDING_PKCS1");
         memcpy (&PkcsPadInfo, pInfo->pPaddingInfo, sizeof(PkcsPadInfo));
         break;
      case CARD_PADDING_PSS:
         LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: CARD_PADDING_PSS");
         break;
      case CARD_PADDING_NONE:
         LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: CARD_PADDING_NONE");
         break;
      default:
         LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: UNSUPPORTED");
         break;
      }
   }

LogTrace(LOGTYPE_ERROR, WHERE, "[pInfo->aiHashAlg][0x%X]");
   if ( pInfo->aiHashAlg == 0xFFFFFFFF )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->aiHashAlg][0x%X]",pInfo->aiHashAlg);
      CLEANUP(SCARD_E_INVALID_PARAMETER);
   }
   if ( ( pInfo->aiHashAlg != CALG_MD2     ) &&
        ( pInfo->aiHashAlg != CALG_MD4     ) &&
        ( pInfo->aiHashAlg != CALG_MD5     ) &&
        ( pInfo->aiHashAlg != CALG_SHA1    ) &&
        ( pInfo->aiHashAlg != CALG_SHA_256 ) &&
        ( pInfo->aiHashAlg != CALG_SHA_384 ) &&
        ( pInfo->aiHashAlg != CALG_SHA_512 ) )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "UNSUPPORTED parameter [pInfo->aiHashAlg][0x%X]",pInfo->aiHashAlg);
      CLEANUP(SCARD_E_UNSUPPORTED_FEATURE);
   }

   if ( gbLoggedOn == 0 )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "Not logged on...");
      CLEANUP( SCARD_W_SECURITY_VIOLATION);
   }

#ifdef _DEBUG
   LogTrace(LOGTYPE_INFO, WHERE, "Data to be Signed...[%d]", pInfo->cbData);
   LogDump (pInfo->cbData, (char *)pInfo->pbData);
#endif

   dwReturn = BeidSignData(pCardData, 
                           pInfo->aiHashAlg,
                           pInfo->cbData, 
                           pInfo->pbData, 
                           &(pInfo->cbSignedData), 
                           &(pInfo->pbSignedData));
   if ( dwReturn != 0 )
   {
      LogTrace(LOGTYPE_ERROR, WHERE, "BeidSignData() returned [0x%X]", dwReturn);
      CLEANUP(dwReturn);
   }

#ifdef _DEBUG
   LogTrace(LOGTYPE_INFO, WHERE, "Signature Data...[%d]", pInfo->cbSignedData);
   LogDump (pInfo->cbSignedData, (char *)pInfo->pbSignedData);
#endif

cleanup:
   LogTrace(LOGTYPE_INFO, WHERE, "Exit API...");
   return(dwReturn);
}
コード例 #5
0
ファイル: CryptoOps.c プロジェクト: Fedict/eid-mw
DWORD WINAPI   CardSignData
	(
	__in      PCARD_DATA          pCardData,
	__in      PCARD_SIGNING_INFO  pInfo
	)
{
	DWORD                      dwReturn       = 0;

	BCRYPT_PKCS1_PADDING_INFO  *PkcsPadInfo = NULL;
	//BCRYPT_PSS_PADDING_INFO    *PssPadInfo  = NULL;

	unsigned int               uiHashAlgo   = HASH_ALGO_NONE;

	BYTE	bKeyNr = BELPIC_KEY_NON_REP;
	BYTE	bAlgoRef = BELPIC_SIGN_ALGO_RSASSA_PKCS1;

	LogTrace(LOGTYPE_INFO, WHERE, "Enter API...");
	/********************/
	/* Check Parameters */
	/********************/
	if ( pCardData == NULL )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pCardData]");
		CLEANUP(SCARD_E_INVALID_PARAMETER);
	}
	if ( pInfo == NULL )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo]");
		CLEANUP(SCARD_E_INVALID_PARAMETER);
	}

	if ( ( pInfo->dwVersion != CARD_SIGNING_INFO_BASIC_VERSION   ) &&
		( pInfo->dwVersion != CARD_SIGNING_INFO_CURRENT_VERSION ) )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->dwVersion][0x%X]", pInfo->dwVersion);
		CLEANUP(ERROR_REVISION_MISMATCH);
	}

	if ( pInfo->pbData == NULL )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->pbData]");
		CLEANUP(SCARD_E_INVALID_PARAMETER);
	}

	if ( pInfo->bContainerIndex == 0 )
	{
		bKeyNr = BELPIC_KEY_AUTH; //see CardGetContainerProperty	
	}
	else if (pInfo->bContainerIndex == 1 )
	{
		bKeyNr = BELPIC_KEY_NON_REP; //see CardGetContainerProperty	
	}
	else
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->bContainerIndex]");
		CLEANUP(SCARD_E_NO_KEY_CONTAINER);
	}

	if ( pInfo->dwKeySpec != AT_SIGNATURE )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->dwKeySpec]");
		CLEANUP(SCARD_E_INVALID_PARAMETER);
	}

	if ( pInfo->dwSigningFlags == 0xFFFFFFFF )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->dwSigningFlags]");
		CLEANUP(SCARD_E_INVALID_PARAMETER);
	}

	if ( ( pInfo->dwSigningFlags & CARD_BUFFER_SIZE_ONLY ) == CARD_BUFFER_SIZE_ONLY)
	{
		LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwSigningFlags: CARD_BUFFER_SIZE_ONLY");

		pInfo->cbSignedData = 128;
		CLEANUP(SCARD_S_SUCCESS);
	}

	if ( pInfo->aiHashAlg == 0xFFFFFFFF )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->aiHashAlg][0x%X]",pInfo->aiHashAlg);
		CLEANUP(SCARD_E_INVALID_PARAMETER);
	}


	//First check if padding info is provided
	if ( ( pInfo->dwSigningFlags & CARD_PADDING_INFO_PRESENT ) == CARD_PADDING_INFO_PRESENT)
		{
			LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwSigningFlags: CARD_PADDING_INFO_PRESENT");
			if ( pInfo->pPaddingInfo == NULL )
			{
				LogTrace(LOGTYPE_ERROR, WHERE, "Invalid parameter [pInfo->pPaddingInfo]");
				CLEANUP(SCARD_E_INVALID_PARAMETER);
			}

			switch(pInfo->dwPaddingType)
			{
			case CARD_PADDING_PKCS1:
				LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: CARD_PADDING_PKCS1");

				PkcsPadInfo = (BCRYPT_PKCS1_PADDING_INFO *) pInfo->pPaddingInfo;

				if ( PkcsPadInfo->pszAlgId == NULL )
				{
					LogTrace(LOGTYPE_INFO, WHERE, "PkcsPadInfo->pszAlgId = NULL: CMD PKCS#1 Sign...");

					uiHashAlgo = HASH_ALGO_NONE;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"MD2") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_MD2;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"MD4") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_MD4;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"MD5") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_MD5;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"SHA1") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_SHA1;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"SHA256") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_SHA_256;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"SHA384") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_SHA_384;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"SHA512") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_SHA_512;
				}
				else
				{
					LogTrace(LOGTYPE_ERROR, WHERE, "[PkcsPadInfo->pszAlgId] unsupported...");
					CLEANUP(SCARD_E_UNSUPPORTED_FEATURE);
				}
				break;
			case CARD_PADDING_PSS:
				//check card belpic applet version : if its < 1.7 -> not supported
				//first need to create workaround for incompatible card and minidriver architecture
				//(beidcard does not allow setting algo between pinpvalidation and signature,
				//and base csp doesn't show the padding algo before pin validation )
				/*PssPadInfo = (BCRYPT_PSS_PADDING_INFO *) pInfo->pPaddingInfo;
				if ( wcscmp(PkcsPadInfo->pszAlgId, L"SHA1") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_NONE;
					bAlgoRef = BELPIC_SIGN_ALGO_RSASSA_PSS_SHA1;
				}
				else if ( wcscmp(PkcsPadInfo->pszAlgId, L"SHA256") == 0 ) 
				{
					uiHashAlgo = HASH_ALGO_NONE;
					bAlgoRef = BELPIC_SIGN_ALGO_RSASSA_PSS_SHA256;
				}
				else
				{*/
					LogTrace(LOGTYPE_ERROR, WHERE, "CARD_PADDING_PSS unsupported...");
					CLEANUP(SCARD_E_UNSUPPORTED_FEATURE);
				//}
				//LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: CARD_PADDING_PSS");
				////memcpy (&PssPadInfo, pInfo->pPaddingInfo, sizeof(PssPadInfo));
				break;
			case CARD_PADDING_NONE:
				LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: CARD_PADDING_NONE");
				uiHashAlgo = HASH_ALGO_NONE;
				break;
			default:
				LogTrace(LOGTYPE_INFO, WHERE, "pInfo->dwPaddingType: UNSUPPORTED");
				break;
			}
		}
	else
	{ //no padding info is provided, defaulting to PKCS1
		LogTrace(LOGTYPE_ERROR, WHERE, "[pInfo->pPaddingInfo] unsupported...");

		switch(pInfo->aiHashAlg)
		{
		case CALG_MD2:
			uiHashAlgo = HASH_ALGO_MD2;
			break;
		case CALG_MD4:
			uiHashAlgo = HASH_ALGO_MD4;
			break;
		case CALG_MD5:
			uiHashAlgo = HASH_ALGO_MD5;
			break;
		case CALG_SHA1: //CALG_SHA: same value
			uiHashAlgo = HASH_ALGO_SHA1;
			break;
		case CALG_SHA_256:
			uiHashAlgo = HASH_ALGO_SHA_256;
			break;
		case CALG_SHA_384:
			uiHashAlgo = HASH_ALGO_SHA_384;
			break;
		case CALG_SHA_512:
			uiHashAlgo = HASH_ALGO_SHA_512;
			break;
		case CALG_SSL3_SHAMD5:
			uiHashAlgo = HASH_ALGO_NONE;
			break;
		case CALG_TLS1PRF:
		case CALG_MAC:
		case CALG_HASH_REPLACE_OWF:
		case CALG_HUGHES_MD5:
		case CALG_HMAC:
			CLEANUP(SCARD_E_UNSUPPORTED_FEATURE);
			break;
		default:
			LogTrace(LOGTYPE_ERROR, WHERE, "[pInfo->aiHashAlg] is zero");
			CLEANUP(SCARD_E_INVALID_PARAMETER);
			/*uiHashAlgo = HASH_ALGO_NONE;*/
			break;
		}

	}

#ifdef _DEBUG
	LogTrace(LOGTYPE_INFO, WHERE, "BeidMSE [key=0x%.2x, algo=0x%.2x]", bKeyNr,bAlgoRef);
#endif

	//dwReturn = BeidMSE(pCardData,bKeyNr,bAlgoRef);
	//if ( dwReturn != 0 )
	//{
	//	LogTrace(LOGTYPE_ERROR, WHERE, "BeidMSE() returned [0x%X]", dwReturn);
	//	CLEANUP(dwReturn);
	//}

#ifdef _DEBUG
	LogTrace(LOGTYPE_INFO, WHERE, "Data to be Signed...[%d]", pInfo->cbData);
	LogDump (pInfo->cbData, (char *)pInfo->pbData);
#endif

	dwReturn = BeidSignData(pCardData, 
		uiHashAlgo,
		pInfo->cbData, 
		pInfo->pbData, 
		&(pInfo->cbSignedData), 
		&(pInfo->pbSignedData));
	if ( dwReturn != 0 )
	{
		LogTrace(LOGTYPE_ERROR, WHERE, "BeidSignData() returned [0x%X]", dwReturn);
		CLEANUP(dwReturn);
	}

#ifdef _DEBUG
	LogTrace(LOGTYPE_INFO, WHERE, "Signature Data...[%d]", pInfo->cbSignedData);
	LogDump (pInfo->cbSignedData, (char *)pInfo->pbSignedData);
#endif

cleanup:
	LogTrace(LOGTYPE_INFO, WHERE, "Exit API...");
	return(dwReturn);
}