VeraCrypt/src/Common/PCSCException.h

136 lines
3.3 KiB
C++

#ifndef TC_HEADER_Common_PCSCException
#define TC_HEADER_Common_PCSCException
#include "Platform/PlatformBase.h"
#if defined (TC_WINDOWS) && !defined (TC_PROTOTYPE)
# include "Exception.h"
#else
# include "Platform/Exception.h"
#endif
#include "SCardLoader.h"
#ifdef TC_MACOSX
#define LONG_PCSC uint32_t
#else
#define LONG_PCSC LONG
#endif
namespace VeraCrypt
{
struct PCSCException: public Exception
{
PCSCException(LONG_PCSC errorCode = (LONG_PCSC)-1): ErrorCode(errorCode){}
#ifdef TC_HEADER_Platform_Exception
virtual ~PCSCException() throw () { }
TC_SERIALIZABLE_EXCEPTION(PCSCException);
#else
void Show(HWND parent) const;
#endif
operator string () const;
LONG_PCSC GetErrorCode() const { return ErrorCode; }
protected:
LONG_PCSC ErrorCode;
};
struct CommandAPDUNotValid: public Exception
{
CommandAPDUNotValid() : SrcPos (""), ErrorStr ("") { }
CommandAPDUNotValid(const string& srcPos, const string& errorStr) : SrcPos (srcPos), ErrorStr(errorStr) { }
#ifdef TC_HEADER_Platform_Exception
virtual ~CommandAPDUNotValid() throw () { }
TC_SERIALIZABLE_EXCEPTION(CommandAPDUNotValid);
#else
void Show(HWND parent) const;
#endif
operator string () const;
protected:
string SrcPos;
string ErrorStr;
};
#ifdef TC_HEADER_Platform_Exception
#define TC_EXCEPTION(NAME) TC_EXCEPTION_DECL(NAME,Exception)
#undef TC_EXCEPTION_SET
#define TC_EXCEPTION_SET \
TC_EXCEPTION_NODECL (PCSCException); \
TC_EXCEPTION_NODECL (CommandAPDUNotValid); \
TC_EXCEPTION (ExtendedAPDUNotSupported); \
TC_EXCEPTION (ScardLibraryInitializationFailed); \
TC_EXCEPTION (EMVUnknownCardType); \
TC_EXCEPTION (EMVSelectAIDFailed); \
TC_EXCEPTION (EMVIccCertNotFound); \
TC_EXCEPTION (EMVIssuerCertNotFound); \
TC_EXCEPTION (EMVCPLCNotFound); \
TC_EXCEPTION (InvalidEMVPath); \
TC_EXCEPTION (EMVKeyfileDataNotFound); \
TC_EXCEPTION (EMVPANNotFound); \
TC_EXCEPTION_SET;
#undef TC_EXCEPTION
#else // !TC_HEADER_Platform_Exception
struct ExtendedAPDUNotSupported: public Exception
{
void Show(HWND parent) const { Error("EXTENDED_APDU_UNSUPPORTED", parent); }
};
struct ScardLibraryInitializationFailed: public Exception
{
void Show(HWND parent) const { Error("SCARD_MODULE_INIT_FAILED", parent); }
};
struct EMVUnknownCardType: public Exception
{
void Show(HWND parent) const { Error("EMV_UNKNOWN_CARD_TYPE", parent); }
};
struct EMVSelectAIDFailed: public Exception
{
void Show(HWND parent) const { Error("EMV_SELECT_AID_FAILED", parent); }
};
struct EMVIccCertNotFound: public Exception
{
void Show(HWND parent) const { Error("EMV_ICC_CERT_NOTFOUND", parent); }
};
struct EMVIssuerCertNotFound: public Exception
{
void Show(HWND parent) const { Error("EMV_ISSUER_CERT_NOTFOUND", parent); }
};
struct EMVCPLCNotFound: public Exception
{
void Show(HWND parent) const { Error("EMV_CPLC_NOTFOUND", parent); }
};
struct EMVPANNotFound: public Exception
{
void Show(HWND parent) const { Error("EMV_PAN_NOTFOUND", parent); }
};
struct InvalidEMVPath: public Exception
{
void Show(HWND parent) const { Error("INVALID_EMV_PATH", parent); }
};
struct EMVKeyfileDataNotFound: public Exception
{
void Show(HWND parent) const { Error("EMV_KEYFILE_DATA_NOTFOUND", parent); }
};
#endif // !TC_HEADER_Platform_Exception
}
#endif // TC_HEADER_Common_PCSCException