Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java Card > RSA setModulus return 6F 00


Автор: Jessy 25.11.2010, 00:04
Создаю RSA public key 512 bit

setExponent  
длинна 0x04
0x01000100 проходит без проблем.



setModulus    

длинна 0x40
6942abe059ed8eb7478a488f45071ddf2fb9e1d34cfb1b8b38df050c4a6081875bd122b17f1d4fa68b57242e632bebdcc9bb2247073dc415e7272ae342b99eda

возвращает 
 <= 6F 00
Status: No precise diagnosis



Примерный код:

rsa_public_key  = (RSAPublicKey)KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, 
                                                                    KeyBuilder.LENGTH_RSA_512, 
                                                                    false);

rsa_public_key.setExponent(buffer, ISO7816.OFFSET_CDATA, ISO7816.OFFSET_LC);


rsa_public_key.setModulus(buffer, ISO7816.OFFSET_CDATA, ISO7816.OFFSET_LC);

Заранее спасибо.

Автор: firstone 25.11.2010, 15:47
1) Не используйте ключи в 512 бит - за месяц хакаются (если не меньше)
2) Мне не понятно, или это не полный код? Получается салат. Можно запостить сюда кусок вашего кода as-is? 

Автор: Jessy 25.11.2010, 17:31
Код

    private void setExponent(APDU apdu)
    {
     byte buffer[] = apdu.getBuffer();
     rsa_public_key.setExponent(buffer, ISO7816.OFFSET_CDATA, buffer[ISO7816.OFFSET_LC]);
     return;
    }
    
    private void setModulus(APDU apdu)
    {
     byte buffer[] = apdu.getBuffer();
     
     rsa_public_key.setModulus(buffer, ISO7816.OFFSET_CDATA, buffer[ISO7816.OFFSET_LC]);
     return;
    }

Ошибка была в неверных аргументах которые я передавал.
Вместо длинны == buffer[ISO7816.OFFSET_LC], я передавал ISO7816.OFFSET_LC == 4

Автор: firstone 29.11.2010, 10:41
Чтож, рад, что все разрешилось. Впредь помечайте пожалуйста "Пометить вопрос как решенный", если он конечно решенный smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)