OSDN Git Service

add dist
[rec10/rec10-git.git] / dist / trunk / b25-remote / BCasCard.h
diff --git a/dist/trunk/b25-remote/BCasCard.h b/dist/trunk/b25-remote/BCasCard.h
new file mode 100755 (executable)
index 0000000..e793203
--- /dev/null
@@ -0,0 +1,85 @@
+// BcasCard.h: CBcasCard \83N\83\89\83X\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\r
+//\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+#pragma once\r
+\r
+
+#include <memory>\r
+#include <vector>\r
+#include <string>\r
+#include <winscard.h>\r
+\r
+\r
+using std::vector;\r
+using std::wstring;\r
+using std::string;\r
+\r
+\r
+// \83G\83\89\81[\83R\81[\83h\r
+#define BCEC_NOERROR                   0x00000000UL    // \83G\83\89\81[\82È\82µ\r
+#define BCEC_INTERNALERROR             0x00000001UL    // \93à\95\94\83G\83\89\81[\r
+#define BCEC_NOTESTABLISHED            0x00000002UL    // \83R\83\93\83e\83L\83X\83g\8am\97§\8e¸\94s\r
+#define BCEC_NOCARDREADERS             0x00000003UL    // \83J\81[\83h\83\8a\81[\83_\82ª\82È\82¢\r
+#define BCEC_ALREADYOPEN               0x00000004UL    // \8aù\82É\83I\81[\83v\83\93\8dÏ\82Ý\r
+#define BCEC_CARDOPENERROR             0x00000005UL    // \83J\81[\83h\83I\81[\83v\83\93\8e¸\94s\r
+#define BCEC_CARDNOTOPEN               0x00000006UL    // \83J\81[\83h\96¢\83I\81[\83v\83\93\r
+#define BCEC_TRANSMITERROR             0x00000007UL    // \92Ê\90M\83G\83\89\81[\r
+#define BCEC_BADARGUMENT               0x00000008UL    // \88ø\90\94\82ª\95s\90³\r
+#define BCEC_ECMREFUSED                        0x00000009UL    // ECM\8eó\95t\8b\91\94Û\r
+\r
+\r
+class CBcasCard\r
+{\r
+public:\r
+       CBcasCard();\r
+       ~CBcasCard();\r
+\r
+       const DWORD GetCardReaderNum(void) const;\r
+       LPCTSTR GetCardReaderName(const DWORD dwIndex = 0UL) const;\r
+\r
+       const bool OpenCard(LPCTSTR lpszReader = NULL);\r
+       void CloseCard(void);\r
+\r
+       const BYTE * GetBcasCardID(void);\r
+       const BYTE * GetInitialCbc(void);\r
+       const BYTE * GetSystemKey(void);\r
+       const BYTE * GetKsFromEcm(const BYTE *pEcmData, const DWORD dwEcmSize);\r
+\r
+       const DWORD GetLastError(void) const;\r
+\r
+protected:\r
+       const bool EnumCardReader(void);\r
+       const bool TransmitCommand(const BYTE *pSendData, const DWORD dwSendSize, BYTE *pRecvData, const DWORD dwMaxRecv, DWORD *pdwRecvSize = NULL);\r
+       const bool InitialSetting(void);\r
+\r
+       SCARDCONTEXT m_ScardContext;\r
+       SCARDHANDLE m_hBcasCard;\r
+\r
+       bool m_bIsEstablish;\r
+\r
+#ifdef _UNICODE        \r
+       vector<wstring> m_CardReaderArray;\r
+#else\r
+       vector<string> m_CardReaderArray;\r
+#endif\r
+\r
+       struct TAG_BCASCARDINFO\r
+       {\r
+               BYTE BcasCardID[6];             // Card ID\r
+               BYTE SystemKey[32];             // Descrambling system key\r
+               BYTE InitialCbc[8];             // Descrambler CBC initial value\r
+       } m_BcasCardInfo;\r
+       \r
+       struct TAG_ECMSTATUS\r
+       {\r
+               DWORD dwLastEcmSize;    // \8dÅ\8cã\82É\96â\82¢\8d\87\82í\82¹\82Ì\82 \82Á\82½ECM\83T\83C\83Y\r
+               BYTE LastEcmData[256];  // \8dÅ\8cã\82É\96â\82¢\8d\87\82í\82¹\82Ì\82 \82Á\82½ECM\83f\81[\83^\r
+               BYTE KsData[16];                // Ks Odd + Even        \r
+       } m_EcmStatus;\r
+       \r
+       DWORD m_dwLastError;\r
+\r
+private:\r
+       const bool StoreEcmData(const BYTE *pEcmData, const DWORD dwEcmSize);\r
+};\r