2015-04-01 4 views
2

Я пытаюсь установить апплет в JCAP-карту J3A040.Установка апплета java-карты не удается из-за генерации пары ключей RSA

Как установить метод, который я следующее:

protected MainApplet() { 

    try { 
     // CREATE RSA KEYS AND PAIR  
     m_keyPair = new KeyPair(KeyPair.ALG_RSA_CRT, KeyBuilder.LENGTH_RSA_2048); 
     // STARTS ON-CARD KEY GENERATION PROCESS 
     m_keyPair.genKeyPair(); 
     // OBTAIN KEY REFERENCES 
     m_publicKey = (RSAPublicKey) m_keyPair.getPublic(); 
     m_privateKey = (RSAPrivateKey) m_keyPair.getPrivate(); 
    } catch (CryptoException c) { 
     //this line will give you the reason of problem 
     short reason = c.getReason(); 
     ISOException.throwIt(reason);  // for check 
    } 

    register(); 
} 

установка всегда терпит неудачу со следующей ошибкой:

pro.javacard.gp.GPException: Install for Install and make selectable failed SW: 6A80 
     at pro.javacard.gp.GlobalPlatform.check(GlobalPlatform.java:1092) 
     at pro.javacard.gp.GlobalPlatform.installAndMakeSelectable(GlobalPlatform.java:798) 
     at pro.javacard.gp.GPTool.main(GPTool.java:478) 

Однако, если я удалю KeyPair поколение, все работает отлично. Я прочитал спецификации карты, и это стоит:

. RSA and RSA CRT (1280 up to 2048 bits keys) for en-/decryption and signature generation and verification1 d. RSA CRT key generation (1280 up to 2048 bits keys) in a secured environment

Я предполагаю, что это не должно быть проблемой.

Любые догадки?

ответ

3

Проблема вызвана недействительным литом: вы запросили ключ RSA Keypair с закрытым ключом в формате китайской версии напоминания (ALG_RSA_CRT).

Именно поэтому метод getPrivate() не возвращает экземпляр RsaPrivateKey, но экземпляр RsaPrivateCrtKey. Литье до RsaPrivateKey вызывает слово состояния 6A80.

Таким образом, вы должны либо использовать стандартный алгоритм:

m_keyPair = new KeyPair(KeyPair.ALG_RSA, KeyBuilder.LENGTH_RSA_2048); 

, или использовать правильный бросок:

m_publicKey = (RSAPublicKey) m_keyPair.getPublic(); 
m_privateKey = (RSAPrivateCrtKey) m_keyPair.getPrivate(); 
+0

о, смущения .. вы, конечно, правы. Спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^