Модераторы: AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с MessageDigest 
:(
    Опции темы
romul
Дата 12.6.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 31.3.2008

Репутация: 1
Всего: 1



Привет, всем. Я снова со своей мелочью.

Предполагал использовать MessageDigest приблизительно так:
Код
private short getMD5Hash(APDU apdu, byte[] msg, short msgOffset, short msgLength, byte[] hash) {
  try {
    MessageDigest MD = MessageDigest.getInstance(MessageDigest.ALG_MD5, false);
    if (MD.getLength() > hash.length) { return 1;}
    MD.doFinal(msg, msgOffset, msgLength, hash, (short) 0);
  } catch (CryptoException e) {
    return e.getReason();
  }
  return 0;
}


в строке с getInstance выдает банальное "6F 00 Status: No precise diagnosis" (не отсутствие алгоритма, а именно 6F 00)

Гугль мне предложил изменить алгоритм или перенести getInstance в конструктор. Попытка воспользоваться советами была неудачна. Результат остался тот же. Так же не помогло использование javacard.security.Signature вместо MessageDigest.

На симуляторе все работает как нельзя лучше. На реальных карточках (Global platform 2.1.1) все дохнет.

Кто-то сталкивался с подобной проблемой?
PM MAIL   Вверх
firstone
Дата 17.6.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 25.9.2007
Где: Кровью залитая Св ятая Земля

Репутация: 5
Всего: 7



Привет!

Какие карты?
--------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй.
PM MAIL   Вверх
romul
Дата 17.6.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 31.3.2008

Репутация: 1
Всего: 1



Цитата(firstone @ 17.6.2008,  13:26)
Привет!

Какие карты?

NCR-овские
ATR - 3B 66 00 FF 4A 43 4F 50 32 30
PM MAIL   Вверх
firstone
Дата 18.6.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 25.9.2007
Где: Кровью залитая Св ятая Земля

Репутация: 5
Всего: 7



Для лучшего понятия проблемы необходимо сделать следующее:
Напишите в коммандной строке JCShell комманду: /identify и перекопируйте сюда результат.
Перекопируйте также лог всех посланных/полученных данных на/с карты/у.
Цитата(romul @  17.6.2008,  18:16 Найти цитируемый пост)
NCR-овские

А какая именно это карта? Есть где-нибудь список ее фич?
--------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй.
PM MAIL   Вверх
romul
Дата 18.6.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 31.3.2008

Репутация: 1
Всего: 1



Цитата(firstone @ 18.6.2008,  07:54)
Для лучшего понятия проблемы необходимо сделать следующее:
Напишите в коммандной строке JCShell комманду: /identify и перекопируйте сюда результат.

cm>  /identify
jcshell: Identification failed - unexpected response (CM=com.ibm.jc.CardManager).
cm>  identify
jcshell: No such command: identify

C identify что то не получается. Список фич сегодня поищу.

Цитата(firstone @ 18.6.2008,  07:54)
Перекопируйте также лог всех посланных/полученных данных на/с карты/у.

Не совсем понял что нужно? Вплоть до отсылки cap файла?

Код

cm>  /term "winscard:4|ACS ACR38U 0"
--Opening terminal
>  /card -a a000000003000000 -c com.ibm.jc.CardManager
--Waiting for card...
ATR=3B 66 00 FF 4A 43 4F 50 32 30                      ;f..JCOP20
ATR: T=0, N=-1, Hist="JCOP20"
 => 00 A4 04 00 08 A0 00 00 00 03 00 00 00 00          ..............
 (74944 usec)
 <= 6F 19 84 08 A0 00 00 00 03 00 00 00 A5 0D 9F 6E    o..............n
    06 40 51 30 23 20 17 9F 65 01 FF 90 00             .@Q0# ..e....
Status: No Error
cm>  set-key 255/1/DES-ECB/404142434445464748494a4b4c4d4e4f 255/2/DES-ECB/404142434445464748494a4b4c4d4e4f 255/3/DES-ECB/404142434445464748494a4b4c4d4e4f
cm>  init-update 255
 => 80 50 00 00 08 86 A5 DF 46 AD BC A2 5E 00          .P......F...^.
 (106189 usec)
 <= 00 00 51 75 00 17 22 90 75 90 01 01 D7 9B AA EA    ..Qu..".u.......
    8C BA 71 37 0A C0 18 0A DC 0A DE F3 90 00          ..q7..........
Status: No Error
cm>  ext-auth plain
 => 84 82 00 00 10 4A 56 86 F2 FE 60 2C AD 34 0A 20    .....JV...`,.4. 
    AF D8 1A 1C 0C                                     .....
 (56751 usec)
 <= 90 00                                              ..
Status: No Error


Потом идет delete, upload, install
Потом:

Код

cm>  card-info
 => 80 F2 80 00 02 4F 00 00                            .....O..
 (49437 usec)
 <= 08 A0 00 00 00 03 00 00 00 07 9E 90 00             .............
Status: No Error
 => 80 F2 40 00 02 4F 00 00                            [email protected]..
 (58788 usec)
 <= 10 00 00 10 70 00 FF 00 01 00 01 00 01 00 01 00    ....p...........
    00 07 00 90 00                                     .....
Status: No Error
 => 80 F2 10 00 02 4F 00 00                            .....O..
 (23785 usec)
 <= 6A 86 
Status: Incorrect parameters (P1,P2)
 => 80 F2 20 00 02 4F 00 00                            .. ..O..
 (163756 usec)
 <= 07 A0 00 00 00 62 00 01 01 00 07 A0 00 00 00 62    .....b.........b
    01 01 01 00 07 A0 00 00 00 62 01 02 01 00 07 A0    .........b......
    00 00 00 62 02 01 01 00 07 A0 00 00 00 03 00 00    ...b............
    01 00 07 A0 00 00 00 03 60 10 01 00 05 31 50 41    ........`....1PA
    59 2E 01 00 10 00 00 10 70 00 FF 00 01 00 01 00    Y.......p.......
    00 00 00 00 00 01 00 90 00                         .........
Status: No Error

PM MAIL   Вверх
romul
Дата 18.6.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 31.3.2008

Репутация: 1
Всего: 1



Цитата(firstone @ 18.6.2008,  07:54)
А какая именно это карта? Есть где-нибудь список ее фич?

Нарыл пока только это:
-----------------------------------------
Карты JCOP 
Стандарты : Java Card 2.2.1, Global Platform 2.1.1, EMV 
Протоколы : ISO 7816 T=0, ISO 7816 T=1
Операционная система I BM 
JCOP 21
VSDC 2.5.1, 10-72 EEPROM, Triple-DES coprocessor, FameX RSA coprocessor.
PM MAIL   Вверх
neutrino
Дата 19.6.2008, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Секунду, так это карты JCOP или NCR?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
romul
Дата 19.6.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 31.3.2008

Репутация: 1
Всего: 1



Прошу меня простить.
Карточка NXP (филипсовская). NCR это только производитель пластика в которую чип вгонялся. Внутренности карточки JCOP.
PM MAIL   Вверх
neutrino
Дата 20.6.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Если это JCOP, то нужная реализация должна быть.

Вот накопал кое-что посмотрите, может поможет:
Код

/**

*/*
*package hash_test;*
 
*import javacard.framework.*;
import javacard.security.*;
 
/**
* @author Jeffreyc
* /select A00000000002
* /send 00AA010000
* <= 01 01 90 00
*/
public class hash extends javacard.framework.Applet
{
//globals
//final short dataOffset = (short) ISO7816.OFFSET_CDATA;
MessageDigest MD5;
MessageDigest RIPEMD160;
MessageDigest SHA;
 
//constructor
private hash (byte bArray[], short bOffset, byte bLength)
{
//MD5 = MessageDigest.getInstance(MessageDigest.ALG_MD5, false); 
//SHA = MessageDigest.getInstance(MessageDigest.ALG_SHA, false);
register(bArray, (short) (bOffset + 1), bArray[bOffset]);
}
//install
public static void install(byte bArray[], short bOffset, byte bLength)
{
new hash (bArray, bOffset, bLength);
}
 
public void process(APDU apdu)
{
byte[] buf = apdu.getBuffer();
if (selectingApplet())
{
return;
}
if (buf[ISO7816.OFFSET_CLA] != 0) ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
 
if (buf[ISO7816.OFFSET_INS] != (byte) (0xAA)) ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
 
switch (buf[ISO7816.OFFSET_P1])
{
case (byte) 0x01:
//byte[] a = new byte[(short) 2];
short b= (short)0;
try {
//RIPEMD160 = MessageDigest.getInstance(MessageDigest.ALG_RIPEMD160, false);
MD5 = MessageDigest.getInstance(MessageDigest.ALG_MD5, false);
b= (short) (b+1) ;
}
catch(Exception e) {
//ISOException.throwIt((short) 0x9999 );
}
finally {
b= (short) ((short) b << 4 ) ;
}
try {
RIPEMD160 = MessageDigest.getInstance(MessageDigest.ALG_RIPEMD160, false);
//MD5 = MessageDigest.getInstance(MessageDigest.ALG_MD5, false);
b= (short) (b+1) ;
}
catch(Exception e) {
//ISOException.throwIt((short) 0x9999 );
}
 
finally {
b= (short) ((short) b << 4 ) ;
}
 
try {
SHA = MessageDigest.getInstance(MessageDigest.ALG_SHA, false);
//MD5 = MessageDigest.getInstance(MessageDigest.ALG_MD5, false);
b= (short) (b+1) ;
}
catch(Exception e) {
//ISOException.throwIt((short) 0x9999 );
}
 
finally {
//b= (short) ((short) b << 4 ) ;
}
Util.setShort(apdu.getBuffer(), (short)0, b);
apdu.setOutgoingAndSend((short)0, (short)2); 
return;
default:
ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
}
}
 
 
 
}




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
romul
Дата 20.6.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 31.3.2008

Репутация: 1
Всего: 1



Цитата(neutrino @ 20.6.2008,  12:30)
Если это JCOP, то нужная реализация должна быть.
Вот накопал кое-что посмотрите, может поможет:

Спасибо. Я следил за вашей темой там. Тут приведена стандартная реализация как бы можно было реализовать это по хелпу. Но, к сожалению, она у меня не проходит. Ищу кого-то, кто мог бы мне подсказать почему может быть затык.

Теоретически возможно, что карта не поддерживает вообще дайджесты. Но что-то мне подсказывает, что это врядли.

Это сообщение отредактировал(а) romul - 20.6.2008, 18:53
PM MAIL   Вверх
neutrino
Дата 21.6.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(romul @  20.6.2008,  17:52 Найти цитируемый пост)
Спасибо. Я следил за вашей темой там. 

smile
Тогда посмотрите на это:
Цитата

You probably have an old JCOP version: v2.
- It does not understand the IDENTIFY command.
- Supports only SCP 01. Looking at your INIT-UPD command, this is the case.
- Also the ATR historical characters indicate JCOP20.
- The ATR itself is according to Visa.

According to the data sheet it supports MD5. Be aware that this JCOP version supports Java Card 2.1.1 and OpenPlatform 2.0.1'.



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java Card | Следующая тема »


 




[ Время генерации скрипта: 0.1111 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.