我如何在 .net 中使用 minidriver for gemalto smart card(axaltocm.dll) 来使用方法
void ChangeReferenceData(byte mode, byte role, byte[] oldPin,byte[] newPin, int maxTries);
我已经从 Windows 更新安装了 gelamto 微型驱动程序。
基本上我想使用 ChangeReferenceData 方法更改管理员密钥。
请帮忙。
您可以安装 Gemalto SDK http://www.gemalto.com/products/dotnet_card/resources/development.html
添加 CardModule_stub.dll 作为参考
使用 MSCM 服务:
CardModuleService 服务 = (CardModuleService)Activator.GetObject(typeof(CardModuleService),@"apdu://selfdiscover/MSCM")
service.ChangeReferenceData(.......)
我更改管理员密钥(在 Gemalto IDPrime.Net 智能卡上)的解决方案是:
byte[] ch = service.GetChallenge();
String sData = BitConverter.ToString(ch).Replace("-", "");
byte[] bResp = Encrypt("000000000000000000000000000000000000000000000000", "0000000000000000", sData);//key, and iv
service.ExternalAuthenticate(bResp);
if (service.IsAuthenticated(2))//2-Admin,1-User
{
byte[] ch1 = service.GetChallenge();
String sData1 = BitConverter.ToString(ch1).Replace("-", "");
byte[] bResp1 = Encrypt("000000000000000000000000000000000000000000000000", "0000000000000000", sData1);
service.ChangeReferenceData(0, 2, bResp1, b_newpin , -1);//for Admin PIN
//service.ChangeReferenceData(0, 1, Encoding.ASCII.GetBytes(userpin), Encoding.ASCII.GetBytes("0001"), -1);//for User PIN
}
您不能将 dll 引用导入您的项目吗?如果 dll 是非托管代码(例如 c++),则必须使用 dllimport。http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx。否则,您只需添加参考。