|
|
// 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_)
|