You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
4.1 KiB
114 lines
4.1 KiB
// AccessCard.h: interface for the CAccessCard class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(ACCESSCARD_H__INCLUDED_)
|
|
#define ACCESSCARD_H__INCLUDED_
|
|
|
|
#include "DllSymDefn.h"
|
|
#include "SmartCard.h"
|
|
|
|
namespace iop
|
|
{
|
|
class IOPDLL_API CAccessCard : public CSmartCard
|
|
{
|
|
public:
|
|
CAccessCard(const SCARDHANDLE hCardHandle, const char* szReaderName,
|
|
const SCARDCONTEXT pContext, const DWORD dwMode);
|
|
virtual ~CAccessCard();
|
|
|
|
virtual void DeleteFile(const WORD wFileID);
|
|
virtual void CreateFile(const FILE_HEADER* pMyFile);
|
|
|
|
virtual void SelectParent();
|
|
virtual void Directory (const BYTE bFile_Nb, FILE_HEADER* pMyFile);
|
|
virtual void Select (const char* szFileFullPath, FILE_HEADER* pMyFile=NULL, const bool fSelectAll = false);
|
|
virtual void SelectCardlet(const BYTE *bAID, const BYTE bAIDLen);
|
|
virtual void SelectLoader();
|
|
virtual void GetSerial(BYTE* bSerial, size_t &SerialLength);
|
|
|
|
virtual void DeleteApplet();
|
|
virtual void ResetInstance();
|
|
virtual void SetCurrentAsLoader();
|
|
virtual void SetDefaultAsLoader();
|
|
virtual void BlockApplet();
|
|
|
|
virtual void ValidateProgram(const BYTE *bSig, const BYTE bSigLength);
|
|
virtual void ResetProgram();
|
|
|
|
virtual void ExecuteMain();
|
|
virtual void ExecuteInstall(const BYTE *bBlock, const BYTE bLen);
|
|
|
|
virtual void ReadRecord(const BYTE bRecNum, const BYTE bMode, const BYTE bDataLen, BYTE *bData);
|
|
virtual void UpdateRecord(const BYTE bRecNum, const BYTE bMode, const BYTE bDataLen, BYTE *bData);
|
|
virtual void VerifyKey (const BYTE bKeyNumber, const BYTE bKeyLength, const BYTE* bKey);
|
|
virtual void VerifyCHV (const BYTE bCHVNumber, const BYTE* bCHV);
|
|
virtual void VerifyTransportKey(const BYTE *bKey);
|
|
virtual void LogoutAll();
|
|
|
|
virtual void GetChallenge(const DWORD dwNumberLength, BYTE* bRandomNumber);
|
|
virtual void ExternalAuth(const KeyType kt, const BYTE bKeyNb,
|
|
const BYTE bDataLength, const BYTE* bData);
|
|
virtual void InternalAuth(const KeyType kt, const BYTE bKeyNb,
|
|
const BYTE bDataLength, const BYTE* bDataIn, BYTE* bDataOut);
|
|
|
|
virtual void ReadPublicKey (CPublicKeyBlob *aKey, const BYTE bKeyNum);
|
|
virtual void WritePublicKey (const CPublicKeyBlob aKey, const BYTE bKeyNum);
|
|
virtual void WritePrivateKey(const CPrivateKeyBlob aKey, const BYTE bKeyNum);
|
|
|
|
virtual void ChangeACL (const BYTE *bACL);
|
|
virtual void ChangeCHV (const BYTE bKeyNumber, const BYTE *bOldCHV, const BYTE *bNewCHV);
|
|
virtual void ChangeCHV (const BYTE bKey_nb, const BYTE *bNewCHV);
|
|
virtual void UnblockCHV (const BYTE bKeyNumber, const BYTE *bUnblockPIN, const BYTE *bNewPin);
|
|
virtual void ChangeUnblockKey (const BYTE bKeyNumber, const BYTE *bNewPIN);
|
|
virtual void ChangeTransportKey(const BYTE *bNewKey);
|
|
|
|
|
|
|
|
protected:
|
|
virtual void
|
|
DefaultDispatchError(ClassByte cb,
|
|
Instruction ins,
|
|
WORD StatusWord) const;
|
|
|
|
virtual void
|
|
DispatchError(ClassByte cb,
|
|
Instruction ins,
|
|
WORD StatusWord) const;
|
|
|
|
virtual void
|
|
DoReadBlock(WORD wOffset,
|
|
BYTE *pbBuffer,
|
|
BYTE bLength);
|
|
|
|
virtual void
|
|
DoWriteBlock(WORD wOffset,
|
|
BYTE const *pbBuffer,
|
|
BYTE cLength);
|
|
virtual bool
|
|
SupportLogout();
|
|
|
|
virtual void Select(const WORD wFileID);
|
|
BYTE m_bClassByte;
|
|
|
|
private:
|
|
enum // size_t/count
|
|
{
|
|
cMaxDirInfo = 0x28,
|
|
};
|
|
|
|
enum // Instruction
|
|
{
|
|
insDeleteFile = 0xE4,
|
|
insDirectory = 0xA8,
|
|
insExecuteMethod = 0x0C,
|
|
insExternalAuth = 0x82,
|
|
insGetACL = 0xFE,
|
|
};
|
|
|
|
bool
|
|
ValidClassByte(BYTE bClassByte);
|
|
|
|
};
|
|
}
|
|
#endif // !defined(AFX_ACCESSCARD_H__INCLUDED_)
|