1 // BcasCard.h: CBcasCard クラスのインターフェイス
3 //////////////////////////////////////////////////////////////////////
20 #define BCEC_NOERROR 0x00000000UL // エラーなし
21 #define BCEC_INTERNALERROR 0x00000001UL // 内部エラー
22 #define BCEC_NOTESTABLISHED 0x00000002UL // コンテキスト確立失敗
23 #define BCEC_NOCARDREADERS 0x00000003UL // カードリーダがない
24 #define BCEC_ALREADYOPEN 0x00000004UL // 既にオープン済み
25 #define BCEC_CARDOPENERROR 0x00000005UL // カードオープン失敗
26 #define BCEC_CARDNOTOPEN 0x00000006UL // カード未オープン
27 #define BCEC_TRANSMITERROR 0x00000007UL // 通信エラー
28 #define BCEC_BADARGUMENT 0x00000008UL // 引数が不正
29 #define BCEC_ECMREFUSED 0x00000009UL // ECM受付拒否
38 const DWORD GetCardReaderNum(void) const;
39 LPCTSTR GetCardReaderName(const DWORD dwIndex = 0UL) const;
41 const bool OpenCard(LPCTSTR lpszReader = NULL);
44 const BYTE * GetBcasCardID(void);
45 const BYTE * GetInitialCbc(void);
46 const BYTE * GetSystemKey(void);
47 const BYTE * GetKsFromEcm(const BYTE *pEcmData, const DWORD dwEcmSize);
49 const DWORD GetLastError(void) const;
52 const bool EnumCardReader(void);
53 const bool TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData, const DWORD dwMaxRecv, DWORD *pdwRecvSize = NULL);
54 const bool InitialSetting(void);
56 SCARDCONTEXT m_ScardContext;
57 SCARDHANDLE m_hBcasCard;
62 vector<wstring> m_CardReaderArray;
64 vector<string> m_CardReaderArray;
67 struct TAG_BCASCARDINFO
69 BYTE BcasCardID[6]; // Card ID
70 BYTE SystemKey[32]; // Descrambling system key
71 BYTE InitialCbc[8]; // Descrambler CBC initial value
76 DWORD dwLastEcmSize; // 最後に問い合わせのあったECMサイズ
77 BYTE LastEcmData[256]; // 最後に問い合わせのあったECMデータ
78 BYTE KsData[16]; // Ks Odd + Even
84 const bool StoreEcmData(const BYTE *pEcmData, const DWORD dwEcmSize);