2013-06-03 3 views
1

Как я могу использовать для мини-драйвер смарт-карты Gemalto (axaltocm.dll) в .net для использования методакак импортировать axaltocm DLL [Gemalto .net карты] в .net

void ChangeReferenceData(byte mode, byte role, byte[] oldPin,byte[] newPin, int maxTries); 

Я установил gelamto с мини-драйвер Центр обновления Windows.

В основном я хочу изменить ключ администратора с помощью метода ChangeReferenceData.

Пожалуйста, помогите.

+0

Вы создали проект? Добавил .dll в качестве ссылки в вашем проекте? нам нужно знать, где вы сейчас находитесь. –

+0

@ Shane.C да, я создал проект, но когда я пытаюсь его добавить .... он показывает некоторую ошибку .- [ссылка на «axaltocm.dll» не может быть добавлена] – codedip

+0

@codedip вы управляли знать, как это сделать? потому что у меня такая же проблема. –

ответ

0

Не можете ли вы импортировать dll refence в свой проект? Если dll - неуправляемый код (например, C++), вы должны использовать dllimport. http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx. Кроме того, вы должны просто добавить подтверждение.

+0

Я тоже это сделал, но все равно не повезло .... это не связано с .net, но minidriver ..... любой орган имеет какую-либо идею – codedip

1

Вы можете установить 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 (.......)

+0

Благодарим вас за ответ. Это помогло мне. Но, поскольку я очень новичок в этом, это будет очень полезно, если вы поможете мне с полным примером кода. Я попробовал код - service.ChangeReferenceData (0, 0x02, old, new, -1); но он показывает ошибку неавторизованного действия [Попытка выполнить несанкционированную операцию.]. Незлая помощь. – codedip

+0

Я не пробовал использовать определенную функцию, но вам, вероятно, нужно сначала подтвердить свой существующий пинкод. // byte role = роль, которую вы хотите проверить, строка pincode = exsiting pincode service.VerifyPin (role, Encoding.ASCII. GetBytes (пин-код)); if (service.IsAuthenticated (role)) {service.ChangeReferenceData (.......)} Попробуйте это у обычного пользователя. Если вы заблокируете пользователя admin, вам нужно сбросить карту. Документация: http://www.gemalto.com/dwnld/6263_IDPrime_.NET_Integ_Guide.pdf – Fredrik

+0

Еще раз спасибо за ваш ответ. Я пробовал то же самое, но когда я проверяю, как Пользователь работал, в случае администратора он говорит: «Значение не входит в ожидаемый диапазон». Я думаю, что verifypin предназначен только для пользователя, для аутентификации администратора я использовал AuthenticateEx для этого. Но все равно получение той же самой ошибки msg для изменения ключа администратора. Он также работает нормально для User.Any идея ??? Помогите пожалуйста – codedip

1

Мое решение для изменения ключа администратора (на 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 
      }