private void bConnect_Click(object sender, EventArgs e)
        {
            retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED,
                                               ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_DIRECT,
                                                   0, ref hCard, ref Protocol);
                if (retCode != ModWinsCard.SCARD_S_SUCCESS)
                {
                    displayOut(1, retCode, "");
                }
                else
                {
                    displayOut(0, 0, "成功连接到" + cbReader.Text);//Successful connection to
                }
            }
            else
            {
                displayOut(0, 0, "成功连接到" + cbReader.Text);
            }
            GetUID();
            connActive         = true;
            gbLoadKeys.Enabled = true;
            gbAuth.Enabled     = true;
            gbBinOps.Enabled   = true;
            groupBox1.Enabled  = true;
            tKeyNum.Focus();
            rbKType1.Checked = true;
            btnClear.Enabled = true;
            btnRead.Enabled  = true;
            btnWrite.Enabled = true;
        }
        private bool Connect()
        {
            bool ReturnedValue;

            retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED,
                                               ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                if (retCode == ModWinsCard.SCARD_W_REMOVED_CARD)
                {
                    displayOut(0, 0, "Error: There is no card on the reader.");
                }
                else
                {
                    displayOut(0, 0, "Error: Unxepected error.");
                }
                ReturnedValue = false;
            }
            else
            {
                displayOut(0, 0, "Successful connection to " + cbReader.Text);
                ReturnedValue = true;
            }
            connActive = true;
            return(ReturnedValue);
        }
Exemple #3
0
        private void bConnect_Click(object sender, EventArgs e)
        {
            retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED,
                                               ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
            }
            else
            {
                displayOut(0, 0, "Successful connection to " + cbReader.Text);
            }
            connActive                  = true;
            bGetFW.Enabled              = true;
            gbAntenna.Enabled           = true;
            gbRed.Enabled               = true;
            gbGreen.Enabled             = true;
            gbBlinkDuration.Enabled     = true;
            bSetLED.Enabled             = true;
            bGetFW.Enabled              = true;
            rbAntOn.Checked             = true;
            rbRedFinalOff.Checked       = true;
            rbRedStateMaskOff.Checked   = true;
            rbRedInitOff.Checked        = true;
            rbRedBlinkMaskOff.Checked   = true;
            rbGreenFinalOff.Checked     = true;
            rbGreenStateMaskOff.Checked = true;
            rbGreenInitOff.Checked      = true;
            rbGreenBlinkMaskOff.Checked = true;
            rbLinkToBuzzOpt1.Checked    = true;
            tT1.Text     = "00";
            tT2.Text     = "00";
            tRepeat.Text = "01";
        }
Exemple #4
0
        private bool CheckCard()
        {
            bool functionReturnValue = false;

            //Variable declaration
            int  ReaderLen = 0;
            long tmpWord;

            tmpWord = 32;
            ATRLen  = Convert.ToInt32(tmpWord);

            retCode = ModWinsCard.SCardStatus(hCard, cbReader.Text, ref ReaderLen, ref dwState, ref dwActProtocol, ref ATRVal[0], ref ATRLen);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                //Call DisplayOut(1, retCode, "")
                functionReturnValue = false;
                return(functionReturnValue);
            }

            else
            {
                InterpretATR();
                functionReturnValue = true;
            }
            return(functionReturnValue);
        }
Exemple #5
0
        public int CardControl()
        {
            string tempstr = "";
            int    index   = 0;

            for (index = 0; index <= SendLen - 1; index++)
            {
                tempstr = tempstr + " " + string.Format("{0:X2}", SendBuff[index]);
            }

            displayOut(2, 0, tempstr);


            retCode = ModWinsCard.SCardControl(hCard, (int)ModWinsCard.IOCTL_CCID_ESCAPE_SCARD_CTL_CODE, ref SendBuff[0], SendLen, ref RecvBuff[0], RecvLen, ref nBytesRet);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(2, retCode, "");
                return(retCode);
            }

            tempstr = "";

            for (index = 0; index <= RecvLen - 1; index++)
            {
                tempstr = tempstr + " " + string.Format("{0:X2}", RecvBuff[index]);
            }

            //DisplayOut(tempstr, 4);
            displayOut(3, 0, tempstr);

            return(retCode);
        }
        private void displayOut(int errType, int retVal, string PrintText)
        {
            switch (errType)
            {
            case 0:
                break;

            case 1:
                PrintText = ModWinsCard.GetScardErrMsg(retVal);
                break;

            case 2:
                PrintText = "<" + PrintText;
                break;

            case 3:
                PrintText = ">" + PrintText;
                break;

            case 4:
                break;
            }
            mMsg.AppendText(PrintText);
            mMsg.AppendText("\n");
            mMsg.Focus();
        }
Exemple #7
0
        public string GetBlockValue(int block, int hCard)
        {
            var value = @"";

            _returnCode = AuthenticateBlock(block, hCard);

            if (_returnCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                throw new ApplicationException(@"Fail to authenticate block", new ApplicationException(ModWinsCard.GetScardErrMsg(_returnCode)));
            }

            _recvBuffLen = _sentBuff[4] + 2;

            _sentBuff = new byte[255];
            _recvBuff = new byte[255];

            _sentBuff = APDUCommands.GetBlockValue(block);

            _returnCode = ModWinsCard.SCardTransmit(hCard, ref _ioSendRequest, ref _sentBuff[0], _sentBuff.Length, ref _ioSendRequest, ref _recvBuff[0], ref _recvBuffLen);

            if (_returnCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                throw new ApplicationException(@"Fail to fetch block value", new ApplicationException(ModWinsCard.GetScardErrMsg(_returnCode)));
            }

            for (int j = 0; j <= _recvBuffLen - 3; j++)
            {
                value += Convert.ToChar(_recvBuff[j]);
            }

            return(value);
        }
Exemple #8
0
        private int CardConnect(int connType)
        {
            //bool functionReturnValue = false;

            if (connActive)
            {
                retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD);
            }

            //Connect
            retCode = ModWinsCard.SCardConnect(hContext, cbReader.Text, ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                if (connType != 1)
                {
                    displayOut(1, retCode, "");
                }
                connActive = false;
                return(retCode);
            }

            else
            {
                if (connType != 1)
                {
                    displayOut(0, 0, "Successful connection to " + cbReader.Text);
                }

                //functionReturnValue = retCode;
            }
            return(retCode);
        }
Exemple #9
0
 private void btnExit_Click(object sender, System.EventArgs e)
 {
     //terminate the application
     retcode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD);
     retcode = ModWinsCard.SCardReleaseContext(hContext);
     Application.Exit();
 }
Exemple #10
0
        private void btnDisconnect_Click(object sender, System.EventArgs e)
        {
            //Disconnect and unpower card
            if (connActive)
            {
                retcode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD);
            }

            retcode = ModWinsCard.SCardReleaseContext(hContext);

            connActive         = false;
            btnFormat.Enabled  = false;
            btnConnect.Enabled = false;
            btnReset.Enabled   = false;
            txtData.Enabled    = false;
            txtData.Text       = "";
            richTextBoxLogs.Clear();
            cbReader.Items.Clear();
            cbReader.Text      = "";
            GroupBox2.Enabled  = false;
            GBUserFile.Enabled = false;
            RBAA11.Checked     = false;
            RBBB22.Checked     = false;
            RBCC33.Checked     = false;
        }
Exemple #11
0
 private void bQuit_Click(object sender, EventArgs e)
 {
     // terminate the application
     retCode = ModWinsCard.SCardReleaseContext(hContext);
     retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD);
     System.Environment.Exit(0);
 }
        private void bInit_Click()
        {
            string ReaderList = "" + Convert.ToChar(0);
            int    indx;
            int    pcchReaders = 0;
            string rName       = "";

            //Establish Context
            retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, ref hContext);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
                return;
            }

            // 2. List PC/SC card readers installed in the system
            retCode = ModWinsCard.SCardListReaders(hContext, null, null, ref pcchReaders);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
                return;
            }

            byte[] ReadersList = new byte[pcchReaders];

            // Fill reader list
            retCode = ModWinsCard.SCardListReaders(hContext, null, ReadersList, ref pcchReaders);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                mMsg.AppendText("SCardListReaders Error: " + ModWinsCard.GetScardErrMsg(retCode));
                return;
            }
            else
            {
                displayOut(0, 0, " ");
            }

            rName = "";
            indx  = 0;

            //Convert reader buffer to string
            while (ReadersList[indx] != 0)
            {
                while (ReadersList[indx] != 0)
                {
                    rName = rName + (char)ReadersList[indx];
                    indx  = indx + 1;
                }
                //Add reader name to list
                cbReader.Items.Add(rName);
                rName = "";
                indx  = indx + 1;
            }

            if (cbReader.Items.Count > 0)
            {
                cbReader.SelectedIndex = 0;
            }
        }
Exemple #13
0
        private void displayOut(int errType, int retVal, string PrintText)
        {
            switch (errType)
            {
            case 0:
                mMsg.SelectionColor = Color.Green;
                break;

            case 1:
                mMsg.SelectionColor = Color.Red;
                PrintText           = ModWinsCard.GetScardErrMsg(retVal);
                break;

            case 2:
                mMsg.SelectionColor = Color.Black;
                PrintText           = "<" + PrintText;
                break;

            case 3:
                mMsg.SelectionColor = Color.Black;
                PrintText           = ">" + PrintText;
                break;

            case 4:
                break;
            }

            mMsg.AppendText(PrintText);
            mMsg.AppendText("\n");
            mMsg.SelectionColor = Color.Black;
            mMsg.Focus();
        }
Exemple #14
0
        /// <summary>
        /// Write Log and Data
        /// </summary>
        /// <param name="errType"></param>
        /// <param name="retVal"></param>
        /// <param name="PrintText"></param>
        private void WriteLog(int errType, int retVal, string PrintText)
        {
            switch (errType)
            {
            case 0:
                txtMessage.SelectionColor = Color.Green;
                break;

            case 1:
                txtMessage.SelectionColor = Color.Red;
                PrintText = ModWinsCard.GetScardErrMsg(retVal);
                break;

            case 2:
                txtMessage.SelectionColor = Color.Black;
                PrintText = "<" + PrintText;
                break;

            case 3:
                txtMessage.SelectionColor = Color.Black;
                PrintText = ">" + PrintText;
                break;

            case 4:
                break;
            }
            txtMessage.AppendText(PrintText);
            txtMessage.AppendText("\n");
            txtMessage.SelectionColor = Color.Black;
            txtMessage.Focus();
        }
Exemple #15
0
        public int SendAPDU()
        {
            int    indx;
            string tmpStr;

            pioSendRequest.dwProtocol  = Aprotocol;
            pioSendRequest.cbPciLength = 8;

            // Display Apdu In
            tmpStr = "";
            for (indx = 0; indx <= SendLen - 1; indx++)
            {
                tmpStr = tmpStr + " " + string.Format("{0:X2}", SendBuff[indx]);
            }
            displayOut(2, 0, tmpStr);
            retCode = ModWinsCard.SCardTransmit(hCard, ref pioSendRequest, ref SendBuff[0], SendLen, ref pioSendRequest, ref RecvBuff[0], ref RecvLen);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
                return(retCode);
            }

            tmpStr = "";
            for (indx = 0; indx <= RecvLen - 1; indx++)
            {
                tmpStr = tmpStr + " " + string.Format("{0:X2}", RecvBuff[indx]);
            }

            displayOut(3, 0, tmpStr);
            return(retCode);
        }
Exemple #16
0
        private void bConnect_Click(object sender, EventArgs e)
        {
            retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED,
                                               ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_DIRECT,
                                                   0, ref hCard, ref Protocol);


                if (retCode != ModWinsCard.SCARD_S_SUCCESS)
                {
                    displayOut(1, retCode, "");
                }
                else
                {
                    displayOut(0, 0, "Successful connection to " + cbReader.Text);
                }
            }
            else
            {
                displayOut(0, 0, "Successful connection to " + cbReader.Text);
            }

            GetFirmware();
        }
        private static void StartTransaction()
        {
            Array.Clear(SendBuff, 0, 262);
            Array.Clear(RecvBuff, 0, 262);

            //Prepare Buffer
            SendBuff[0] = 0xFF; //start
            SendBuff[2] = 0x20; //memory adres
            SendBuff[3] = 0x0;
            SendBuff[4] = 0x01;
            SendBuff[5] = 0x1;//I2c
            sendLen     = 6;
            RecvLen     = RecvBuff.Length;

            ioRequest.dwProtocol  = Protocol;
            ioRequest.cbPciLength = 8;

            retCode = ModWinsCard.SCardBeginTransaction(hCard);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                throw new Exception(retCode.ToString());
            }

            retCode = ModWinsCard.SCardTransmit(hCard, ref ioRequest, ref SendBuff[0], sendLen, ref ioRequest, ref RecvBuff[0], ref RecvLen);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                throw new Exception(retCode.ToString());
            }
        }
Exemple #18
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            retCode = ModWinsCard.SCardConnect(hContext, ddlReaderList.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED,
                                               ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                retCode = ModWinsCard.SCardConnect(hContext, ddlReaderList.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_DIRECT,
                                                   0, ref hCard, ref Protocol);
                if (retCode != ModWinsCard.SCARD_S_SUCCESS)
                {
                    WriteLog(1, retCode, "");
                }
                else
                {
                    WriteLog(0, 0, "Connected to " + ddlReaderList.Text);//Successful connection to
                }
            }
            else
            {
                WriteLog(0, 0, "Connected to " + ddlReaderList.Text);//Successful connection to
            }

            GetUID();

            connActive = true;
        }
Exemple #19
0
        private void displayOut(int errType, int retVal, string PrintText)
        {
            switch (errType)
            {
            case 0:
                break;

            case 1:
                PrintText = ModWinsCard.GetScardErrMsg(retVal);
                break;

            case 2:
                PrintText = "<" + PrintText;
                break;

            case 3:
                PrintText = ">" + PrintText;
                break;

            case 4:
                break;
            }

            mMsg.Items.Add(PrintText);
            mMsg.ForeColor = Color.Black;
            mMsg.Focus();
        }
Exemple #20
0
        private void bConnect_Click(object sender, EventArgs e)
        {
            retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED,
                                               ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
            }
            else
            {
                displayOut(0, 0, "Successful connection to " + cbReader.Text);
            }
            connActive         = true;
            bClear.Enabled     = true;
            cbOpt1.Checked     = true;
            cbOpt2.Checked     = true;
            cbOpt3.Checked     = true;
            cbOpt4.Checked     = true;
            cbOpt5.Checked     = true;
            cbOpt6.Checked     = true;
            cbOpt7.Checked     = true;
            gbPollOpt.Enabled  = true;
            bStartPoll.Enabled = true;
            opt250.Checked     = true;
        }
Exemple #21
0
        private void CardCk()
        {
            bool absent = false;

            //Establish Context
            retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, ref hContext);

            if (retCode == ModWinsCard.SCARD_S_SUCCESS)
            {
                while (!Present)
                {
                    Success          = true;
                    RdrState.RdrName = "ACS ACR122 0";
                    //Check Card Status
                    retCode = ModWinsCard.SCardGetStatusChangeA(this.hContext, 0, ref RdrState, 1);

                    if (retCode == ModWinsCard.SCARD_S_SUCCESS)
                    {
                        Success = true;
                        if ((Convert.ToUInt32(RdrState.RdrEventState) & ModWinsCard.SCARD_STATE_PRESENT) == ModWinsCard.SCARD_STATE_PRESENT)
                        {
                            retCode = ModWinsCard.SCardConnect(hContext, RdrState.RdrName, ModWinsCard.SCARD_SHARE_SHARED,
                                                               ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

                            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
                            {
                                Success = false;
                                MessageBox.Show(ModWinsCard.GetScardErrMsg(retCode));
                            }
                            else
                            {
                                Success    = true;
                                connActive = true;
                                Present    = true;
                            }
                        }
                        if ((Convert.ToUInt32(RdrState.RdrEventState) & ModWinsCard.SCARD_STATE_EMPTY) == ModWinsCard.SCARD_STATE_EMPTY &&
                            !absent)
                        {
                            absent     = true;
                            connActive = false;
                        }
                    }
                    else
                    {
                        Success = false;
                        MessageBox.Show(ModWinsCard.GetScardErrMsg(retCode));
                    }
                }
            }
            else
            {
                Success = false;
                MessageBox.Show(ModWinsCard.GetScardErrMsg(retCode));
            }

            OnCardPresent();
            OnCardAbsent();
        }
Exemple #22
0
        private void btnInit_Click(object sender, EventArgs e)
        {
            int pcchReaders = 0;

            retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, ref hContext);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                WriteLog(1, retCode, "");

                return;
            }

            retCode = ModWinsCard.SCardListReaders(this.hContext, null, null, ref pcchReaders);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                WriteLog(1, retCode, "");

                return;
            }

            byte[] ReadersList = new byte[pcchReaders];

            //Fill reader list
            retCode = ModWinsCard.SCardListReaders(this.hContext, null, ReadersList, ref pcchReaders);
            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                txtMessage.AppendText("SCardListReaders Error: " + ModWinsCard.GetScardErrMsg(retCode));

                return;
            }
            else
            {
                WriteLog(0, 0, " ");
            }

            //Convert reader buffer to string
            int    idx   = 0;
            string rName = "";

            while (ReadersList[idx] != 0)
            {
                while (ReadersList[idx] != 0)
                {
                    rName = rName + (char)ReadersList[idx];
                    idx   = idx + 1;
                }
                //Add reader name to list
                ddlReaderList.Items.Add(rName);
                rName = "";
                idx   = idx + 1;
            }

            if (ddlReaderList.Items.Count > 0)
            {
                ddlReaderList.SelectedIndex = 0;
            }
        }
Exemple #23
0
        public void CardReset()
        {
            if (connActive)
            {
                retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD);
            }

            retCode = ModWinsCard.SCardReleaseContext(hCard);
        }
Exemple #24
0
        private void bReset_Click(object sender, EventArgs e)
        {
            if (connActive)
            {
                retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD);
            }

            retCode = ModWinsCard.SCardReleaseContext(hCard);
            InitMenu();
        }
Exemple #25
0
        private void bGetAtr_Click(object sender, EventArgs e)
        {
            string tmpStr;
            int    indx;

            displayOut(0, 0, "Invoke Card Status");
            ATRLen = 33;

            retCode = ModWinsCard.SCardStatus(hCard, cbReader.Text, ref ReaderLen, ref dwState, ref dwActProtocol, ref ATRVal[0], ref ATRLen);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
                System.Environment.Exit(0);
            }

            else
            {
                tmpStr = "ATR Length : " + ATRLen.ToString();
                displayOut(3, 0, tmpStr);

                tmpStr = "ATR Value : ";

                for (indx = 0; indx <= ATRLen - 1; indx++)
                {
                    tmpStr = tmpStr + " " + string.Format("{0:X2}", ATRVal[indx]);
                }

                displayOut(3, 0, tmpStr);
            }

            tmpStr = "Active Protocol: ";

            switch (dwActProtocol)
            {
            case 1:
                tmpStr = tmpStr + "T=0";
                break;

            case 2:
                tmpStr = tmpStr + "T=1";
                break;

            default:
                tmpStr = "No protocol is defined.";
                break;
            }

            displayOut(3, 1, tmpStr);
            InterpretATR();
        }
Exemple #26
0
        private void bConnect_Click(object sender, EventArgs e)
        {
            retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_EXCLUSIVE,
                                               ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
            }
            else
            {
                displayOut(0, 0, "SCardConnect...OK");
            }
        }
Exemple #27
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="handleFlag">isWriteOrNot</param>
        /// <returns></returns>
        public int SendAPDU(int handleFlag)
        {
            pioSendRequest.dwProtocol  = Aprotocol;
            pioSendRequest.cbPciLength = 8;

            // Display Apdu In
            string tmpStr = string.Empty;

            if (handleFlag == 2)//Update
            {
                for (int idx = 0; idx <= 4; idx++)
                {
                    tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", SendBuff[idx]);
                }
            }
            else if (handleFlag == 1)//Read
            {
                for (int idx = 0; idx <= SendLen - 1; idx++)
                {
                    tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", SendBuff[idx]);
                }
            }
            else if (handleFlag == 0)//Format
            {
                for (int idx = 0; idx <= 4; idx++)
                {
                    tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", SendBuffAll[idx]);
                }
            }

            //WriteLog(2, 0, tmpStr);
            retCode = ModWinsCard.SCardTransmit(hCard, ref pioSendRequest, ref SendBuff[0], SendLen, ref pioSendRequest, ref RecvBuff[0], ref RecvLen);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                WriteLog(1, retCode, "");
                return(retCode);
            }

            tmpStr = "";
            for (int idx = 0; idx < RecvLen; idx++)
            {
                tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", RecvBuff[idx]);
            }

            WriteLog(3, 0, tmpStr);

            return(retCode);
        }
Exemple #28
0
        private int AuthenticateBlock(int nBlock, int hCard)
        {
            _ioSendRequest = new ModWinsCard.SCARD_IO_REQUEST {
                dwProtocol = ModWinsCard.SCARD_PROTOCOL_UNDEFINED, cbPciLength = 8
            };

            _recvBuffLen = 0x02;

            _sentBuff = new byte[255];
            _recvBuff = new byte[255];

            _sentBuff = APDUCommands.AuthenticateBlock(nBlock);

            return(ModWinsCard.SCardTransmit(hCard, ref _ioSendRequest, ref _sentBuff[0], _sentBuff.Length, ref _ioSendRequest, ref _recvBuff[0], ref _recvBuffLen));
        }
Exemple #29
0
        private void _pollingTimer_Tick(object sender, EventArgs e)
        {
            int readerLen  = 0,
                dwState    = 0,
                dwProtocol = 0;

            _receivedBuffer = new byte[32];

            var atrLen = _receivedBuffer.Length;

            Connect();

            _returnCode = ModWinsCard.SCardStatus(_hCard, _name, ref readerLen, ref dwState, ref dwProtocol, ref _receivedBuffer[0], ref atrLen);

            if (_returnCode != ModWinsCard.SCARD_S_SUCCESS && ShouldChangeState(ReaderCardState.NO_CARD_DETECTED))
            {
                _smartCard = null;

                OnReaderCardStateChanged(new ReaderCardStateChangedEventArgs(ReaderCardState.NO_CARD_DETECTED));
            }
            else
            {
                try
                {
                    var card = new SmartCard(atrLen, _receivedBuffer);

                    if (ShouldChangeState(ReaderCardState.CARD_PRESENT) || card.Type != _smartCard.Type)
                    {
                        if (_smartCard == null)
                        {
                            _smartCard = card;
                        }
                        else
                        {
                            _smartCard = _smartCard.Type == card.Type ? _smartCard : card;
                        }

                        OnReaderCardStateChanged(new ReaderCardStateChangedEventArgs(ReaderCardState.CARD_PRESENT));
                    }
                }
                catch (Exception)
                {
                    _smartCard = null;

                    OnReaderCardStateChanged(new ReaderCardStateChangedEventArgs(ReaderCardState.NO_CARD_DETECTED));
                }
            }
        }
Exemple #30
0
        private int Transmit()
        {
            ioRequest.dwProtocol  = Protocol;
            ioRequest.cbPciLength = 8;


            RecvLen = 262;

            // Issue SCardTransmit
            retCode = ModWinsCard.SCardTransmit(hCard, ref ioRequest, ref SendBuff[0], SendLen, ref ioRequest, ref RecvBuff[0], ref RecvLen);

            if (retCode != ModWinsCard.SCARD_S_SUCCESS)
            {
                displayOut(1, retCode, "");
            }
            return(retCode);
        }
Exemple #31
0
        private void PerformTransmitAPDU(ref ModWinsCard.APDURec apdu)
        {
            ModWinsCard.SCARD_IO_REQUEST SendRequest;
            ModWinsCard.SCARD_IO_REQUEST RecvRequest;

            SendBuff[0] = apdu.bCLA;
            SendBuff[1] = apdu.bINS;
            SendBuff[2] = apdu.bP1;
            SendBuff[3] = apdu.bP2;
            SendBuff[4] = apdu.bP3;

            if (apdu.IsSend)
            {
                for (indx = 0; indx < apdu.bP3; indx++)
                    SendBuff[5 + indx] = apdu.Data[indx];

                SendBuffLen = 5 + apdu.bP3;
                RecvBuffLen = 2;
            }
            else
            {
                SendBuffLen = 5;
                RecvBuffLen = 2 + apdu.bP3;
            }

            SendRequest.dwProtocol = Aprotocol;
            SendRequest.cbPciLength = 8;

            RecvRequest.dwProtocol = Aprotocol;
            RecvRequest.cbPciLength = 8;

            retcode = ModWinsCard.SCardTransmit(hCard, ref SendRequest, ref SendBuff[0], SendBuffLen, ref SendRequest, ref RecvBuff[0], ref RecvBuffLen);

            if (retcode != ModWinsCard.SCARD_S_SUCCESS)
            {
                logBox1.Items.Add(ModWinsCard.GetScardErrMsg(retcode));
                logBox1.Items.Add("SCardTransmit Error!");
            }
            else
            {
                logBox1.Items.Add("SCardTransmit OK...");
            }

            sTemp = "";
            // do loop for sendbuffLen
            for (indx = 0; indx < SendBuffLen; indx++)
                sTemp = sTemp + " " + string.Format("{0:X2}", SendBuff[indx]);

            // Display Send Buffer Value
            logBox1.Items.Add("Send Buffer : " + sTemp);
            logBox1.SelectedIndex = logBox1.Items.Count - 1;

            sTemp = "";
            // do loop for RecvbuffLen
            for (indx = 0; indx < RecvBuffLen; indx++)
                sTemp = sTemp + " " + string.Format("{0:X2}", RecvBuff[indx]);

            // Display Receive Buffer Value
            logBox1.Items.Add("Receive Buffer:" + sTemp);
            logBox1.SelectedIndex = logBox1.Items.Count - 1;

            if (apdu.IsSend == false)
            {
                for (indx = 0; indx < apdu.bP3 + 2; indx++)
                    apdu.Data[indx] = RecvBuff[indx];

            }
            logBox1.SelectedIndex = logBox1.Items.Count - 1;
            //logBox1.Items.Add("apdu!!");
        }