|
Модераторы: AntonSaburov |
|
romul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Доброе время суток.
Есть проблема с обновременным получением/передачей данных за один вызов функции SCardTransmit. Есть апплет написаный мною для карточки. Есть Java клиент (опять же мой), который вполне нормально работает с карточкой в любом режиме. Принимает и получает данные. Но когда я воспользовался функцией SCardTransmit из winscard.dll, то она мне вернула "error 87". Если я вызываю функцию апплета которая только читает данные но не возвращает в буфер, все ок - 90 00. Если функцию апплета которая только возвращает данные (в буфер ничего не ложу), тоже 90 00. Как только функция апплета использует буфер и для приема и для передачи - 87 error. В апплете используются самые примитивные функции получения /отдачи данных? и к тому же они отлизаны с помощью Java клиента. На них не приходится "грешить". Единственный момент в котором может быть трабла, SCardTransmit вызывается из дельфового компонента. Но на первый взгляд реализация вызова внушает доверие. Пока даже не знаю куда копать. Может быть кто-то сталкивался с такой проблемой? Я понимаю, что вопрос на совсем по Java, но точно по Java Card-ам :) (Прошу прощенья за дубль темы. Глючил браузер) Это сообщение отредактировал(а) romul - 31.3.2008, 17:32 |
|||
|
||||
firstone |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 25.9.2007 Где: Кровью залитая Св ятая Земля Репутация: 5 Всего: 7 |
Это не ошибка класса SCARD_ERROR.
Первое, что нужно проверить, является ли эта ошибка производной 6A87 (если конечно 87 в шестнадцатиричной системе). T.e. incorrect parameters (см. таблицу кодов ISO/IEC 7816 например здесь: http://forum.vingrad.ru/articles/topic-192...-card-iso.html) Второе, используете ли Вы какие-либо крипто функции в самом апплете при обработке APDU? Вы можете опубликовать здесь trace log посланных APDU? Если это возможно, скопируйте сюда код который работает с буфером. Это сообщение отредактировал(а) firstone - 1.4.2008, 13:50 --------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй. |
|||
|
||||
firstone |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 25.9.2007 Где: Кровью залитая Св ятая Земля Репутация: 5 Всего: 7 |
Вот пример того, как происходит считывание из буфера и запись в него. Может будет helpful:
--------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй. |
|||
|
||||
romul |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
В отдельных функциях я использую криптофункции. Но в случае моего теста я упростил все до минимума.
Вот кусочек апплета
Вот trace log из клиента Java: Видно что команды нормально отрабатывают:
А вот trace log из клиента Delphi:
Казалось бы виноват Делфи компонент который рулит SCardTransmit из dll. Но ведь он и отправляет и получает данные командами 1A и 1B. Когда идет обмед данными в одну сторону. Но в случае когда обмен данными идет в обе стороны напрочь отказывается работать. Возможно я не учитываю какую-то особенность работы с карточкой или с мелкософтовской библиотечкой winscard.dll для работы PS/CS... Попытки чего-то изменить методом нацчного тыка в компоненте не привели ни к чему хорошему Вот кстати вызов функции в компоненте, несколько мной упрощенный для форума:
|
||||||||
|
|||||||||
romul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Я слишком много вывалил?
|
|||
|
||||
romul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Народ, хелп плиз! Скажите хотябы где спросить можно. Форум, контакт. Или где почитать. У меня проект стал :(
|
|||
|
||||
Kangaroo |
|
|||
AA - Aussie Animal Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 1 Всего: 104 |
Попробуй напиши firstone'y в личку. Я так понимаю, он пока один у нас эксперт в Java Card -------------------- Lost.... |
|||
|
||||
romul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Спасибо, так и сделаю. |
|||
|
||||
firstone |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 25.9.2007 Где: Кровью залитая Св ятая Земля Репутация: 5 Всего: 7 |
Извиняюсь за поздний ответ.
Только чтo запустил Ваш апплет на карте. И все работает. Клиент я написал сам. Использовал windows PC/SC. Видимо Ваш клиент работает неправильно. К сожалению сказать где именно ошибка в клиенте невозможно за неимением егo кода. Предлагаю залогить вызовы PC/SC функций (с параметрами) и опубликовать лог здесь. Если нужен работающий PC/SC framework на .NET, я могу Вам послать. С уважением, firstone. --------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй. |
|||
|
||||
romul |
|
||||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Спасибо за ответ. То, что с клиентом не так это 100%, поскольку работающий клиент на Java обменивается данными на ура.
Наиболее важную часть своего клиента я в большом своем письме привел самым последним. Но чтобы не мотать туда-сюда страничку повторю и добавлю подробности: Это функция вызывающая SCardTransmit из MS-овской библиотечки winscard.dll для работы PS/CS.
Вызываю ее со следущими строками (Send мой запрос, Responce получаемый ответ):
К сообщению прикрепляю полный код клиента и компонента для работы с библиотечкой. Это сообщение отредактировал(а) romul - 7.4.2008, 15:00 |
||||
|
|||||
firstone |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 25.9.2007 Где: Кровью залитая Св ятая Земля Репутация: 5 Всего: 7 |
Странно. У меня Ваш клиент работает:
Добавлено через 10 минут и 26 секунд Каким ридером Вы пользуетесь? --------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй. |
|||
|
||||
romul |
|
||||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Это хорошая новость!
А это хорошая мысль. Зря я ее отгонял так далеко от себя. Smart Card Reader ACR38T. Вроди бы китайский какой-то. Попробую другие использовать. |
||||
|
|||||
romul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Попробовал 3 разных кардридера от 2 производителя. Попробовал 2 разных карточки разных производителя. Эффект тот же.
Очень странно. |
|||
|
||||
firstone |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 116 Регистрация: 25.9.2007 Где: Кровью залитая Св ятая Земля Репутация: 5 Всего: 7 |
Попробуйте на другом компьютере.
--------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй. |
|||
|
||||
romul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.3.2008 Репутация: 1 Всего: 1 |
Не работает на 3-х компьютерах. Эксперименты продолжаю. Наверно легче убить "сибя ап стенку", чем заставить ее заработать.
А каким ридером пользуетесь Вы? И что у вас за карточка на которой эксперимент был удачным? И на какой оси пробовали? Это сообщение отредактировал(а) romul - 8.4.2008, 11:08 |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java Card | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |