136 lines
3.3 KiB
C++
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
|