mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-06-17 10:06:06 -05:00
EMV keyfile support: Overall code improvements and bug fixes
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user