|| Home || IT Security || Smart cards || Resources || Links || switch_to_cz

Last update: 19.11.2012 You may be also interested in:

JavaCard's algorithms support test

What it does:
  1. Provides list of supported algorithms from JavaCard API including supported lengths of keys
  2. Provides information about available RAM and EEPROM memory and garbage collection capabilities
  3. Provides basic speed tests for selected operations
  4. Test possibility for using raw RSA for fast modular multiplication (usable to implement Diffie-Hellman for example)
The set of cryptographic algorithms supported by the particular Java smart card is sometimes hard obtain from vendor's specifications. Moreover, supported algorithms may change in more recent revisions of given type of card (typically, basic primitives like block cipher or asymmetric cryptography algorithm remains same as they are often implemented in hardware, but cryptographic constructions like particular MAC algorithm or supported key sizes may be added later). AlgTest application allows you to enumerate the support of cryptographic algorithms specified in JavaCard 2.2.2 and earlier. If you will find your favorite algorithm missing, try crypto algorithms re-implementation page for software implementation of several algorithms (AES, SHA2, OAEP) that can be compiled for JavaCard platform.

The basic idea is simple - if the particular algorithm/key size is supported, then instance creation will succeed. Otherwise, CryptoException.NO_SUCH_ALGORITHM is thrown. This can be employed for fast test of supported algorithms. AlgTest applet tries to create instance of algorithms for all possible constants defined in JavaCard specification (currently JC2.2.2) and eventually catch the exception (example for ALG_DES_CBC_NOPAD algorithm):

    try {
      m_cipher = Cipher.getInstance(ALG_DES_CBC_NOPAD, false);
      // If this line is reached, than DES in CBC mode with no padding (ALG_DES_CBC_NOPAD) is supported.
      supported = true;
    }
    catch (CryptoException e) {
      if (e.getReason() == CryptoException.NO_SUCH_ALGORITHM)) {
        // algorithm is not supported
        supported = false;
      }
      else {
        // other error occured
      }
    }
The results for almost all possible constants defined in JC2.2.2 are transmitted to PC (AlgTestPC application) and saved into csv file.

arrow Download packed binaries and source codes here : AlgTest GitHub repository (contains source codes, compiled versions, Java and C++ client)
arrow Download older version here : AlgTestSuite 1.2.zip, AlgTestSuite 1.0.zip.

If you have results for smart card not listed below, consider to send me the resulting csv - I will be happy to publish it here and give you the credit.

Please, report any bugs or suggestions to my mail (see footer of the page). Thank you!


Usage:
  1. Download prepared version or compile your own modification of AlgTest applet - Download and try compiled and converted applet *.cap from prepared AlgTest suite. If you are unable to upload the package to card or install it, then see Caveats, comment out unsupported classes and compile your own limited version of AlgTest applet (see for step-by-step JavaCard compile & convert instructions).
  2. Upload AlgTest package to your smart card and install it - Use uploader supplied by your card vendor (e.g., GPShell, Gemplus RADIII, IBM JCOP or Cyberflex Access Toolkit). Package AID: 6D 79 70 61 63 6B 61 67 31, Applet AID: 6D 79 70 61 63 30 30 30 31. No special installation parameters are given.
  3. Run application AlgTestPC.exe - Choose the target reader for card with uploaded AlgTest applet and let it run. CSV file with values separated by the semicolon is created (AlgTest_ATR.csv).
Examined classes:
  • javacard.security.Signature - all types specified in JavaCard 2.2.2
  • javacard.security.KeyBuilder - all key types and key lengths specified in JavaCard 2.2.2
  • javacard.security.KeyPair - on-card generation test for all key types and key lengths specified in JavaCard 2.2.2. Note, that generation of key pair may is time expensive operation (up to minute or more), so be patient. A time necessary for generation is measured, but this may differe significantly between repeated runs, so do your own multiple tests, if you are interested in average time (we are generating only ones).
  • javacard.security.MessageDigest - all types specified in JavaCard 2.2.2
  • javacard.security.RandomData - all types specified in JavaCard 2.2.2
  • javacard.security.KeyAgreement - all types specified in JavaCard 2.2.2. Note, that this class is commonly unsupported as a whole (and commented out in AlgTest by default).
  • javacard.security.Checksum - all types specified in JavaCard 2.2.2. Note, that this class is commonly unsupported as a whole (and commented out in AlgTest by default).

Caveats:
  • Missing support for the whole class (e.g., javacard.security.KeyAgreement) - The test is examining all defined constants of algorithm type and possible key length for given class and return wheter is given algorithm or key length supported or not. Your card must be able to create instance of particular class for this to work. If your card do not support particular JavaCard class as a whole, you will probably not be able to upload and install pre-prepared converted packages as the on-card verifier will detects wrong reference. Then comment out test code in TestSupportedModes() for particular class and then compile and convert new version of AlgTest applet (converter should warn you about all unsupported classes you are linking from code). Commonly, following classes may not be supported: javacard.security.KeyAgreement, javacard.security.Checksum
  • Limited memory/garbage collection of particular smart card - An allocation of objects during the test may lead to memory exhaustion, if the smart card do not support automatic garbage collection (often). Further allocation then fail even when the particular algorithm is supported. Try to re-install AlgTest applet if the test execution fail, allocated objects are often freed when applet is removed and installed again.
  • Smart card must support exception handling - Not an issue on newer cards, but may be missing on older ones (e.g., Gemplus GXP211_PK). The exception handling (try/catch construct) is necessary to correctly process allocation of instance of unsupported algorithms. If you have card without exception handling, you must try to create instance inside your code one by one and check whether it is possible.
  • Smart card should have reasonable memory size or garbage collector - We are allocating several instances of algorithm one by one and memory can be exhausted before the last object is allocated. Typical behaviour resulting from missing garbage collection is failed allocation of supported algorithms in second run of AlgTestClient.exe application, even when previous run successfully allocated algorithm object. Gemalto (Gemplus) cards work usually without any problem, but separate compilation of selected parts of AlgTest applet are necessary for cards like NXP JCOP4.1 or Cyberflex Palmera V5 (typically in KeyBuilder part - card is not able to support 20+ key objects without memory deallocation). If you encounter this issue, comment out most of the testing code, run only for small uncommented part, then comment it again and uncomment other part - inconvenient, but working.

Results for tested cards:

Card name Card ATR Supported algorithms Date Created by
G+D SmartCafe Expert 144k Dual 3b fd 18 00 00 80 31 fe 45 73 66 74 65 20 63 64 31 34 34 2d 6e 66 d8 GD_SmartCafe_Expert_144k_Dual_20130310.pdf
GD_SmartCafe_Expert_144k_Dual_20130310.csv
03/2013 Diego NdK
NXP JCOP J3A080 (successor of JCOP31) v 2.4.1 3B F8 13 00 00 81 31 FE 45 4A 43 4F 50 76 32 34 31 B7 NXP_JCOP_J3A080v241_20121001.pdf
NXP_JCOP_J3A080v241_20121001.csv
10/2012 Lazuardi Nasution
Oberthur Cosmo Dual 72K 3B 7B 18 00 00 00 31 C0 64 77 E3 03 00 82 90 00 OberthurCosmoDual72K_112008.pdf
OberthurCosmoDual72K_112008.csv
11/2008 Petr Svenda
NXP JCOP 4.1 V2.2.1 72K 3B FA 18 00 00 81 31 FE 45 4A 43 4F 50 34 31 56 32 32 31 9D JCOP41_112008.pdf
JCOP41_112008.csv
11/2008 Petr Svenda
NXP JCOP 3.1 V2.2 36K 3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78 JCOP31_112008.pdf
JCOP31_112008.csv
11/2008 Petr Svenda
Axalto Cyberflex Palmera V5 3B E6 00 00 81 21 45 32 4B 01 01 01 01 7A CyberflexPalmeraV5_112008.pdf
CyberflexPalmeraV5_112008.csv
11/2008 Petr Svenda
Nokia 6131 NFC phone
3B 88 80 01 00 73 C8 40 13 00 90 00 71 Nokia6131_102008.pdf
Nokia6131_102008.xls
10/2008 Hakan Karahan
Gemplus GCX4 72k PK
(TOP DM GX4)
3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43 TwinGCX4_72k_PK_072007.pdf
TwinGCX4_72k_072007.csv
07/2007 Petr Svenda
Gemplus GXPPro-R3.2 E64
(TOP IM GX3)
3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08 GXPE64PK_052007.pdf
GXPE64PK_052007.csv
05/2007 Petr Svenda
Gemplus GXPPro-R3.2 E32
(TOP IS GX3)
3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00 GXPR3r32_052007.pdf
GXPR3r32_052007.csv
05/2007 Petr Svenda
Gemplus GXPLite-Generic
3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00 GXPLiteGeneric_052007.pdf
GXPLiteGeneric_052007.csv
05/2007 Petr Svenda
Gemplus GXPPro-R3
3B 7B 94 00 00 80 65 B0 83 01 01 74 83 00 90 00 GXPR3_052007.pdf
GXPR3_052007.csv
05/2007 Petr Svenda
Axalto Cyberflex 32 e-gate
3B 75 94 00 00 62 02 02 02 01 Axalto_Cryptoflex32k_012007.pdf
Axalto_Cryptoflex32k_012007.doc
01/2007 Petr Svenda


Tested cards abbreviations:
c1 Oberthur Cosmo Dual 72K 3B:7B:18:00:00:00:31:C0:64:77:E3:03:00:82:90:00
c2 Gemplus GCX4 72k PK (GemCombiXpresso + integrated Mifare1k), 3B:7A:94:00:00:80:65:A2:01:01:01:3D:72:D6:43
c3 NXP JCOP 4.1 V2.2.1, 3B:FA:18:00:00:81:31:FE:45:4A:43:4F:50:34:31:56:32:32:31:9D
c4 NXP JCOP31 V2.2 36K 3B:EB:00:00:81:31:20:45:4A:43:4F:50:33:31:33:36:47:44:54:78
c5 Gemalto GXP R4 72K (TOP IM GX4), 3B:7D:94:00:00:80:31:80:65:B0:83:11:C0:A9:83:00:90:00
c6 Gemplus GXP Pro-R3.2 (TOP IS GX3) 3B:7D:94:00:00:80:31:80:65:B0:83:01:02:90:83:00:90:00
c7 Gemplus GXPPro-R3 3B:7B:94:00:00:80:65:B0:83:01:01:74:83:00:90:00
c8 Gemplus GXPLite-Generic 3B:7D:94:00:00:80:31:80:65:B0:83:01:02:90:83:00:90:00
c9 Gemplus GXP E64 PK (TOP IM GX3 ) 3B:7E:94:00:00:80:25:A0:00:00:00:28:56:80:10:21:00:01:08
c10 Axalto Cyberflex Palmera V5 3B:E6:00:00:81:21:45:32:4B:01:01:01:01:7A
c11 Schlumberger Cyberflex 32K e-gate: ATR = 3B 75 94 00 00 62 02 02 02 01
c12 Nokia 6131 phone, ATR = 3B:88:80:01:00:73:C8:40:13:00:90:00:71

Note: Blank white box means that algorithm was not tested yet with the card and will be added in future. Error means that tested card gives permanent error other then CryptoException.NO_SUCH_ALGORITHM when called.

javacardx.crypto.Cipher c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_DES_CBC_NOPAD yes yes yes yes yes yes yes yes yes yes yes Yes
ALG_DES_CBC_ISO9797_M1 yes yes yes yes yes yes no yes yes yes yes Yes
ALG_DES_CBC_ISO9797_M2 yes yes yes yes yes yes no yes yes yes yes yes
ALG_DES_CBC_PKCS5 no no no no no no no no no no no yes
ALG_DES_ECB_NOPAD yes yes yes yes yes yes yes yes yes yes yes yes
ALG_DES_ECB_ISO9797_M1 yes yes yes yes yes yes no yes yes yes yes yes
ALG_DES_ECB_ISO9797_M2 yes yes yes yes yes yes no yes yes yes yes yes
ALG_DES_ECB_PKCS5 no no no no no no no no no no no yes
ALG_RSA_ISO14888 no no no no no no no no no no no yes
ALG_RSA_PKCS1 yes yes yes yes yes yes no yes yes yes yes yes
ALG_RSA_ISO9796 no no no no no no no no no no no yes
ALG_RSA_NOPAD yes yes yes yes yes yes yes yes yes yes yes yes
ALG_AES_BLOCK_128_CBC_NOPAD no yes yes yes yes no no no no yes no No
ALG_AES_BLOCK_128_ECB_NOPAD no yes yes yes yes no no no no yes no No
ALG_RSA_PKCS1_OAEP yes no no no no no no no no no no No
ALG_KOREAN_SEED_ECB_NOPAD no no no no no no no no no yes no No
ALG_KOREAN_SEED_CBC_NOPAD no no no no no no no no no yes no No
javacard.crypto.Signature c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_DES_MAC4_NOPAD yes yes no no yes yes yes yes yes yes no yes
ALG_DES_MAC8_NOPAD yes yes yes yes yes yes yes yes yes yes yes yes
ALG_DES_MAC4_ISO9797_M1 yes yes no no yes yes no yes yes yes no yes
ALG_DES_MAC8_ISO9797_M1 yes yes yes yes yes yes no yes yes yes yes yes
ALG_DES_MAC4_ISO9797_M2 yes yes no no yes yes no yes yes yes no yes
ALG_DES_MAC8_ISO9797_M2 yes yes yes yes yes yes no yes yes yes yes yes
ALG_DES_MAC4_PKCS5 no no no no no no no no no no no yes
ALG_DES_MAC8_PKCS5 no no no no no no no no no no no yes
ALG_RSA_SHA_ISO9796 yes yes yes yes yes yes no yes yes yes no yes
ALG_RSA_SHA_PKCS1 yes yes yes yes yes yes yes yes yes yes yes yes
ALG_RSA_MD5_PKCS1 yes yes yes yes yes yes no yes yes yes yes yes
ALG_RSA_RIPEMD160_ISO9796 no no no no no no no no no no no yes
ALG_RSA_RIPEMD160_PKCS1 no no no no no no no no no no no yes
ALG_DSA_SHA no no no no no no no no no no no No
ALG_RSA_SHA_RFC2409 no no no no no no no no no no no yes
ALG_RSA_MD5_RFC2409 no no no no no no no no no no no yes
ALG_ECDSA_SHA no no yes yes no no no no no no no No
ALG_AES_MAC_128_NOPAD no yes yes yes yes no no no no yes no no
ALG_DES_MAC4_ISO9797_1_M2_ALG3 yes yes no no yes no no no no no no yes
ALG_DES_MAC8_ISO9797_1_M2_ALG3 yes yes yes yes yes no no no no no no yes
ALG_RSA_SHA_PKCS1_PSS yes no no no no no no no no no no No
ALG_RSA_MD5_PKCS1_PSS yes no no no no no no no no no no No
ALG_RSA_RIPEMD160_PKCS1_PSS no no no no no no no no no no no No
ALG_HMAC_SHA1 no no no no no no no no no yes   No
ALG_HMAC_SHA_256 no no no no no no no no no yes   No
ALG_HMAC_SHA_384 no no no no no no no no no yes   No
ALG_HMAC_SHA_512 no no no no no no no no no no   No
ALG_HMAC_MD5 no no no no no no no no no no   No
ALG_HMAC_RIPEMD160 no no no no no no no no no no   No
ALG_RSA_SHA_ISO9796_MR no no no no no no no no no no   No
ALG_RSA_RIPEMD160_ISO9796_MR no no no no no no no no no no   No
ALG_SEED_MAC_NOPAD no no no no no no no no no no   No
javacard.security.MessageDigest c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_SHA yes yes yes yes yes yes yes yes yes yes yes yes
ALG_MD5 yes yes yes yes yes yes yes yes yes yes yes yes
ALG_RIPEMD160 no no no no no no no no no no no yes
ALG_SHA_256 no no no no no no no no no no no No
ALG_SHA_384 no no no no no no no no no no no No
ALG_SHA_512 no no no no no no no no no no no No
javacard.security.RandomData c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_PSEUDO_RANDOM yes yes yes yes yes yes no yes yes yes yes yes
ALG_SECURE_RANDOM yes yes yes yes yes yes yes yes yes yes yes yes
javacard.security.KeyBuilder c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
TYPE_DES_TRANSIENT_RESET yes yes yes yes yes yes yes yes yes yes   yes
TYPE_DES_TRANSIENT_DESELECT yes yes yes yes yes yes yes yes yes yes   yes
TYPE_DES LENGTH_DES yes yes yes yes yes yes yes yes yes yes   yes
TYPE_DES LENGTH_DES3_2KEY yes yes yes yes yes yes yes yes yes yes   yes
TYPE_DES LENGTH_DES3_3KEY yes yes yes yes yes yes yes yes yes yes   yes
TYPE_AES_TRANSIENT_RESET no yes no no yes no no no no yes   No
TYPE_AES_TRANSIENT_DESELECT no yes no no yes no no no no yes   No
TYPE_AES LENGTH_AES_128 no yes no no yes no no no no yes   No
TYPE_AES LENGTH_AES_192 no yes no no yes no no no no no   No
TYPE_AES LENGTH_AES_256 no yes no no yes no no no no no   No
TYPE_RSA_PUBLIC LENGTH_RSA_512 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_PUBLIC LENGTH_RSA_736 yes yes yes yes yes no no no no yes   yes
TYPE_RSA_PUBLIC LENGTH_RSA_768 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_PUBLIC LENGTH_RSA_896 yes yes yes yes yes no no no no yes   yes
TYPE_RSA_PUBLIC LENGTH_RSA_1024 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_PUBLIC LENGTH_RSA_1280 yes yes yes yes yes no no no yes no   yes
TYPE_RSA_PUBLIC LENGTH_RSA_1536 yes yes yes yes yes no no no yes no   yes
TYPE_RSA_PUBLIC LENGTH_RSA_1984 yes yes yes yes yes no no no no no   yes
TYPE_RSA_PUBLIC LENGTH_RSA_2048 yes yes yes yes yes yes no yes yes no   yes
TYPE_RSA_PRIVATE LENGTH_RSA_512 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_PRIVATE LENGTH_RSA_736 yes yes yes yes yes no no no no yes   yes
TYPE_RSA_PRIVATE LENGTH_RSA_768 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_PRIVATE LENGTH_RSA_896 yes yes yes yes yes no no no no yes   yes
TYPE_RSA_PRIVATE LENGTH_RSA_1024 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_PRIVATE LENGTH_RSA_1280 yes yes yes yes yes no no no yes no   yes
TYPE_RSA_PRIVATE LENGTH_RSA_1536 yes yes yes yes yes no no no yes no   yes
TYPE_RSA_PRIVATE LENGTH_RSA_1984 yes yes yes yes yes no no no no no   yes
TYPE_RSA_PRIVATE LENGTH_RSA_2048 yes yes yes yes yes no no no no no   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_512 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_736 yes yes no no yes no no no no yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_768 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_896 yes yes yes yes yes no no no no yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1024 yes yes yes yes yes yes yes yes yes yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1280 yes yes yes yes yes no no no yes yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1536 yes yes yes yes yes no no no yes yes   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1984 yes yes yes yes yes no no no no no   yes
TYPE_RSA_CRT_PRIVATE LENGTH_RSA_2048 yes yes yes yes yes yes no yes yes no   yes
TYPE_DSA_PRIVATE LENGTH_DSA_512 no no no no no no no no no no   No
TYPE_DSA_PRIVATE LENGTH_DSA_768 no no no no no no no no no no   No
TYPE_DSA_PRIVATE LENGTH_DSA_1024 no no no no no no no no no no   No
TYPE_DSA_PUBLIC LENGTH_DSA_512 no no no no no no no no no no   No
TYPE_DSA_PUBLIC LENGTH_DSA_768 no no no no no no no no no no   No
TYPE_DSA_PUBLIC LENGTH_DSA_1024 no no no no no no no no no no   No
TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_113 no no yes yes no no no no no no   No
TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_131 no no yes yes no no no no no no   No
TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_163 no no yes yes no no no no no no   No
TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_193 no no yes yes no no no no no no   No
TYPE_EC_FP_PRIVATE LENGTH_EC_FP_112 no no no no no no no no no no   No
TYPE_EC_FP_PRIVATE LENGTH_EC_FP_128 no no no no no no no no no no   No
TYPE_EC_FP_PRIVATE LENGTH_EC_FP_160 no no no no no no no no no no   No
TYPE_EC_FP_PRIVATE LENGTH_EC_FP_192 no no no no no no no no no no   No
TYPE_KOREAN_SEED_TRANSIENT_RESET no no no no no no no no no no   No
TYPE_KOREAN_SEED_TRANSIENT_DESELECT no no no no no no no no no no   No
TYPE_KOREAN_SEED LENGTH_KOREAN_SEED_128 no no no no no no no no no no   No
TYPE_HMAC_TRANSIENT_RESET no no no no no no no no no no   No
TYPE_HMAC_TRANSIENT_DESELECT no no no no no no no no no no   No
TYPE_HMAC LENGTH_HMAC_SHA_1_BLOCK_64 no no no no no no no no no no   No
TYPE_HMAC LENGTH_HMAC_SHA_256_BLOCK_64 no no no no no no no no no no   No
TYPE_HMAC LENGTH_HMAC_SHA_384_BLOCK_64 no no no no no no no no no no   No
TYPE_HMAC LENGTH_HMAC_SHA_512_BLOCK_64 no no no no no no no no no no   No
javacard.security.KeyPair ALG_RSA on-card generation c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_RSA LENGTH_RSA_512 no yes no no yes yes yes   yes yes   yes
ALG_RSA LENGTH_RSA_736 no no no no yes no no   no yes   yes
ALG_RSA LENGTH_RSA_768 no yes no no yes yes no   yes yes   yes
ALG_RSA LENGTH_RSA_896 no yes no no yes no no   no yes   yes
ALG_RSA LENGTH_RSA_1024 no yes no no yes yes yes   yes yes   yes
ALG_RSA LENGTH_RSA_1280 no yes no no yes no no   yes yes   yes
ALG_RSA LENGTH_RSA_1536 no yes no no yes no no   yes no   yes
ALG_RSA LENGTH_RSA_1984 no yes no no yes no no   no no   yes
ALG_RSA LENGTH_RSA_2048 no yes no no yes yes no   yes no   yes
javacard.security.KeyPair ALG_RSA_CRT on-card generation c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_RSA_CRT LENGTH_RSA_512 yes yes yes yes yes yes yes   yes yes   yes
ALG_RSA_CRT LENGTH_RSA_768 yes yes yes yes yes no no   no error   yes
ALG_RSA_CRT LENGTH_RSA_736 yes yes yes yes yes yes no   yes yes   yes
ALG_RSA_CRT LENGTH_RSA_896 yes yes yes yes yes no no   no error   yes
ALG_RSA_CRT LENGTH_RSA_1024 yes yes yes yes yes yes yes   yes yes   yes
ALG_RSA_CRT LENGTH_RSA_1280 yes yes yes yes yes no no   yes no   yes
ALG_RSA_CRT LENGTH_RSA_1536 yes yes yes yes yes no no   yes no   yes
ALG_RSA_CRT LENGTH_RSA_1984 yes yes yes yes yes no no   no no   yes
ALG_RSA_CRT LENGTH_RSA_2048 yes yes yes yes yes yes no   yes no   yes
javacard.security.KeyPair ALG_DSA on-card generation c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_DSA LENGTH_DSA_512 no no no no no no no   no no   no
ALG_DSA LENGTH_DSA_768 no no no no no no no   no no   no
ALG_DSA LENGTH_DSA_1024 no no no no no no no   no no   no
javacard.security.KeyPair ALG_EC_F2M on-card generation c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_EC_F2M LENGTH_EC_F2M_113 no no yes yes no no no   no no   no
ALG_EC_F2M LENGTH_EC_F2M_131 no no yes yes no no no   no no   no
ALG_EC_F2M LENGTH_EC_F2M_163 no no yes yes no no no   no no   no
ALG_EC_F2M LENGTH_EC_F2M_193 no no yes yes no no no   no no   no
javacard.security.KeyPair ALG_EC_FP on-card generation c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_EC_FP LENGTH_EC_FP_112 no no no no no no no   no no   no
ALG_EC_FP LENGTH_EC_FP_128 no no no no no no no   no no   no
ALG_EC_FP LENGTH_EC_FP_160 no no no no no no no   no no   no
ALG_EC_FP LENGTH_EC_FP_192 no no no no no no no   no no   no
javacard.security.KeyAgreement; c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_EC_SVDP_DH no no yes yes no no no   no no   no
ALG_EC_SVDP_DHC no no yes yes no no no   no no   no
javacard.security.Checksum; c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
ALG_ISO3309_CRC16 no yes yes yes yes no no   no no   no
ALG_ISO3309_CRC32 no no no no no no no   no no   no


TODO list:
  • Tests for system related objects support (RMI, BigInteger)
  • Tests for OpenPlatform functionality (GPSystem)
  • Performance testing of cryptographic coprocessors (DES, AES, RSA, ...)
  • Performance testing of bytecode execution
  • Performance testing of memory management speed (RAM/EEPROM write/read)



contact
OpenPGP key : 0x89CEB31C