diff --git a/GemCard/CardNative.cs b/GemCard/CardNative.cs
index fc7d02122..3439ebb5a 100644
--- a/GemCard/CardNative.cs
+++ b/GemCard/CardNative.cs
@@ -199,7 +199,8 @@ namespace GemCard
{
Disconnect(DISCONNECT.Unpower);
- ReleaseContext();
+ try { ReleaseContext(); }
+ catch { }
}
#region ICard Members
@@ -215,66 +216,73 @@ namespace GemCard
/// A string array of the readers
public override string[] ListReaders()
{
- EstablishContext(SCOPE.User);
+ try
+ {
+ EstablishContext(SCOPE.User);
- string[] sListReaders = null;
- UInt32 pchReaders = 0;
- IntPtr szListReaders = IntPtr.Zero;
+ string[] sListReaders = null;
+ UInt32 pchReaders = 0;
+ IntPtr szListReaders = IntPtr.Zero;
- m_nLastError = SCardListReaders(m_hContext, null, szListReaders, out pchReaders);
- if (m_nLastError == 0)
- {
- szListReaders = Marshal.AllocHGlobal((int) pchReaders);
- m_nLastError = SCardListReaders(m_hContext, null, szListReaders, out pchReaders);
- if (m_nLastError == 0)
- {
- char[] caReadersData = new char[pchReaders];
- int nbReaders = 0;
- for (int nI = 0; nI < pchReaders; nI++)
- {
- caReadersData[nI] = (char) Marshal.ReadByte(szListReaders, nI);
+ m_nLastError = SCardListReaders(m_hContext, null, szListReaders, out pchReaders);
+ if (m_nLastError == 0)
+ {
+ szListReaders = Marshal.AllocHGlobal((int)pchReaders);
+ m_nLastError = SCardListReaders(m_hContext, null, szListReaders, out pchReaders);
+ if (m_nLastError == 0)
+ {
+ char[] caReadersData = new char[pchReaders];
+ int nbReaders = 0;
+ for (int nI = 0; nI < pchReaders; nI++)
+ {
+ caReadersData[nI] = (char)Marshal.ReadByte(szListReaders, nI);
- if (caReadersData[nI] == 0)
- nbReaders++;
- }
+ if (caReadersData[nI] == 0)
+ nbReaders++;
+ }
- // Remove last 0
- --nbReaders;
+ // Remove last 0
+ --nbReaders;
- if (nbReaders != 0)
- {
- sListReaders = new string[nbReaders];
- char[] caReader = new char[pchReaders];
- int nIdx = 0;
- int nIdy = 0;
- int nIdz = 0;
- // Get the nJ string from the multi-string
+ if (nbReaders != 0)
+ {
+ sListReaders = new string[nbReaders];
+ char[] caReader = new char[pchReaders];
+ int nIdx = 0;
+ int nIdy = 0;
+ int nIdz = 0;
+ // Get the nJ string from the multi-string
- while(nIdx < pchReaders - 1)
- {
- caReader[nIdy] = caReadersData[nIdx];
- if (caReader[nIdy] == 0)
- {
- sListReaders[nIdz] = new string(caReader, 0, nIdy);
- ++nIdz;
- nIdy = 0;
- caReader = new char[pchReaders];
- }
- else
- ++nIdy;
+ while (nIdx < pchReaders - 1)
+ {
+ caReader[nIdy] = caReadersData[nIdx];
+ if (caReader[nIdy] == 0)
+ {
+ sListReaders[nIdz] = new string(caReader, 0, nIdy);
+ ++nIdz;
+ nIdy = 0;
+ caReader = new char[pchReaders];
+ }
+ else
+ ++nIdy;
- ++nIdx;
- }
- }
+ ++nIdx;
+ }
+ }
- }
+ }
- Marshal.FreeHGlobal(szListReaders);
- }
+ Marshal.FreeHGlobal(szListReaders);
+ }
- ReleaseContext();
+ ReleaseContext();
- return sListReaders;
+ return sListReaders;
+ }
+ catch
+ {
+ return new string[0];
+ }
}
///
diff --git a/SharedDatabase/Forms/LoginDlg.cs b/SharedDatabase/Forms/LoginDlg.cs
index 4bf12c391..24ec70a1f 100644
--- a/SharedDatabase/Forms/LoginDlg.cs
+++ b/SharedDatabase/Forms/LoginDlg.cs
@@ -4,6 +4,7 @@
using System;
using System.Drawing;
using System.Windows.Forms;
+using log4net;
using Common;
using GemCard;
using SharedDatabase.Entities;
@@ -17,6 +18,8 @@ namespace SharedDatabase.Forms
///
public partial class LoginDlg : Form
{
+ private static readonly ILog log = LogManager.GetLogger(typeof(LoginDlg));
+
/// Public readonly
public string UserName { get { return user; } }
@@ -111,10 +114,16 @@ namespace SharedDatabase.Forms
string[] cardReaders = card.ListReaders();
if (cardReaders != null)
{
+ foreach (var crd in cardReaders)
+ {
+ log.WarnFormat("SMART card reader found: {0}", crd);
+ }
+
foreach (var crd in cardReaders)
{
if (crd.Contains("NFC"))
{
+ log.ErrorFormat("SMART card reader selected: {0}", crd);
smartCardReader = crd; /// NFC smart card reader detected
break;
}
diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs
index 94a764e55..01aa0a8c6 100644
--- a/TBF/Properties/AssemblyInfo.cs
+++ b/TBF/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("3.1.1801.0")]
-[assembly: AssemblyFileVersion("3.1.1801.0")]
+[assembly: AssemblyVersion("3.1.1805.0")]
+[assembly: AssemblyFileVersion("3.1.1805.0")]
diff --git a/TBF/UI/Shared/LoginDlgWithBenchSelection.cs b/TBF/UI/Shared/LoginDlgWithBenchSelection.cs
index 6000cf5ad..9dbfd9f00 100644
--- a/TBF/UI/Shared/LoginDlgWithBenchSelection.cs
+++ b/TBF/UI/Shared/LoginDlgWithBenchSelection.cs
@@ -4,6 +4,7 @@
using System;
using System.Drawing;
using System.Windows.Forms;
+using log4net;
using Common;
using GemCard;
using TBF.Resources;
@@ -17,6 +18,8 @@ namespace TBF.UI.Shared
///
public partial class LoginDlgWithBenchSelection : Form
{
+ private static readonly ILog log = LogManager.GetLogger(typeof(LoginDlgWithBenchSelection));
+
public const string UseTheTagPassword = "UseTheTag0293578";
/// Private fields
@@ -108,10 +111,16 @@ namespace TBF.UI.Shared
string[] cardReaders = card.ListReaders();
if (cardReaders != null)
{
+ foreach (var crd in cardReaders)
+ {
+ log.WarnFormat("SMART card reader found: {0}", crd);
+ }
+
foreach (var crd in cardReaders)
{
if (crd.Contains("NFC"))
{
+ log.ErrorFormat("SMART card reader selected: {0}", crd);
smartCardReader = crd; /// NFC smart card reader detected
break;
}
@@ -241,14 +250,22 @@ namespace TBF.UI.Shared
void OnCardInserted(object sender, CardInsertedEventArgs args)
{
- BackColor = Color.Green;
- card.Connect(smartCardReader, SHARE.Shared, PROTOCOL.T0orT1);
+ string tag = string.Empty;
+ try
+ {
+ BackColor = Color.Green;
+ card.Connect(smartCardReader, SHARE.Shared, PROTOCOL.T0orT1);
- /// Read the serial number of the card
- APDUResponse response = card.Transmit(new APDUCommand(0xFF, 0xCA, 0x00, 0x00, null, 7));
- string tag = response.ToString();
+ /// Read the serial number of the card
+ APDUResponse response = card.Transmit(new APDUCommand(0xFF, 0xCA, 0x00, 0x00, null, 7));
+ tag = response.ToString();
- card.Disconnect(DISCONNECT.Leave);
+ card.Disconnect(DISCONNECT.Leave);
+ }
+ catch
+ {
+ tag = string.Empty;
+ }
if (testBenchComboBox.SelectedItem != null)
{
@@ -281,7 +298,8 @@ namespace TBF.UI.Shared
{
if (!string.IsNullOrEmpty(smartCardReader))
{
- card.StopCardEvents();
+ try { card.StopCardEvents(); }
+ catch { }
}
}
}
diff --git a/Users/Forms/EditSelectedUser.cs b/Users/Forms/EditSelectedUser.cs
index a7a21c744..29f27e045 100644
--- a/Users/Forms/EditSelectedUser.cs
+++ b/Users/Forms/EditSelectedUser.cs
@@ -307,14 +307,22 @@ namespace Users.Forms
void OnCardInserted(object sender, CardInsertedEventArgs args)
{
- BackColor = Color.Green;
- card.Connect(smartCardReader, SHARE.Shared, PROTOCOL.T0orT1);
+ string tag = string.Empty;
+ try
+ {
+ BackColor = Color.Green;
+ card.Connect(smartCardReader, SHARE.Shared, PROTOCOL.T0orT1);
- /// Read the serial number of the card
- APDUResponse response = card.Transmit(new APDUCommand(0xFF, 0xCA, 0x00, 0x00, null, 7));
- txtTag.Text = response.ToString();
+ /// Read the serial number of the card
+ APDUResponse response = card.Transmit(new APDUCommand(0xFF, 0xCA, 0x00, 0x00, null, 7));
+ txtTag.Text = response.ToString();
- card.Disconnect(DISCONNECT.Leave);
+ card.Disconnect(DISCONNECT.Leave);
+ }
+ catch
+ {
+ txtTag.Text = string.Empty;
+ }
}
@@ -327,7 +335,8 @@ namespace Users.Forms
{
if (!string.IsNullOrEmpty(smartCardReader))
{
- card.StopCardEvents();
+ try { card.StopCardEvents(); }
+ catch { }
}
}
}
diff --git a/Users/Forms/LoginDlg.cs b/Users/Forms/LoginDlg.cs
index bcde73f07..a3104e2b5 100644
--- a/Users/Forms/LoginDlg.cs
+++ b/Users/Forms/LoginDlg.cs
@@ -278,14 +278,23 @@ namespace Users.Forms
void OnCardInserted(object sender, CardInsertedEventArgs args)
{
- BackColor = Color.Green;
- card.Connect(smartCardReader, SHARE.Shared, PROTOCOL.T0orT1);
+ string tag = string.Empty;
- /// Read the serial number of the card
- APDUResponse response = card.Transmit(new APDUCommand(0xFF, 0xCA, 0x00, 0x00, null, 7));
- string tag = response.ToString();
+ try
+ {
+ BackColor = Color.Green;
+ card.Connect(smartCardReader, SHARE.Shared, PROTOCOL.T0orT1);
- card.Disconnect(DISCONNECT.Leave);
+ /// Read the serial number of the card
+ APDUResponse response = card.Transmit(new APDUCommand(0xFF, 0xCA, 0x00, 0x00, null, 7));
+ tag = response.ToString();
+
+ card.Disconnect(DISCONNECT.Leave);
+ }
+ catch
+ {
+ tag = string.Empty;
+ }
DBSettings[] dbs = new DBSettings[] { GlobalData.RemoteUsersDB, GlobalData.LocalUsersDB };
bool authorized = false;
@@ -335,7 +344,8 @@ namespace Users.Forms
{
if (!string.IsNullOrEmpty(smartCardReader))
{
- card.StopCardEvents();
+ try { card.StopCardEvents(); }
+ catch { }
}
}
}