At 21:39 25/02/2008 -0300, you wrote:
It continues to give the same error, even when I enabled only RSA and -DWITH_RSA -DWITH_ENCRYPT...

it RSA / RSA Ciphers were required by the applet BUT not provided by the platform, the install for install will probably fail [1], NOT the load process.

[1]: if the applet instantiates such cipher (outside an exception handler) in the applet constructor and a Cipher.getInstance() throws an error, you won't be able to instantiate the applet (during the *install for install*) if the applet instantiate ciphers when they are needed, the applet instantiation can sucess and a crypto operation (performed later) will fail.

whatever the case, the *loading* has NO reason to fail because of a lack of RSA support; what the applet needs at this stage regarding RSA is only the presence of the javacard.security package; this package shall be present (whatever the mechanisms actually provided by the card) OR the card is not JavaCard 2.1+ compliant.


> install -file CardEdge.cap -sdAID A000000018434D00 -nvCodeLimit 4000
> file name CardEdge.cap
> --> 80E602001906A0000003230108A000000018434D000006EF04C6020FB00000
> <-- 009000

so no such package with given AID exists.

you're loading your package under control of the security domain "A000000018434D00" make sure it is what you want (meaning not using the global card domain: A000000003000000). your load parameter field is "EF04C6020FB0" (don't know what that means, may be a check control required by your security domain, make sure it does not enforce some rules regarding the library to be loaded)


> 80E80000EF C4822F6D 010010DECAFFED010204090006A0000003230102001F0010001F000B00 > 290256006C21AE000A03F30000067F00060000000004010004002904020107A00000006201010201 > 07A0000000620102020107A0000000620201000107A000000062000103000B0107A0000003230101 > 009006006C00800313000C0404000500D1FFFF00B400ED05E9060706270647067100830002000101 > 1100001CE41D5C1D831E3C1E491E6C1EA71EB11EB91EC21EC91ED61EE11EEC1EF51F061F17008300 > 030001010D00001F331F8B1FAD1FF620062016203720EB20FF21112120212E21920721AE00064018
> 8C002C180388
> <-- 6985

CAP file structure & content are fully documented by public doc. from SUN, according chapter 6 "CAP File format" this stream shall read:

header_component [1] (size: 16) {
        2.1
        ACC_APPLET
        A00000032301 0.9
}

meaning:
- package contains applet,
- library AID is A00000032301, it's fine you used the same value in install for load
- its version 0.9
- it requires JVC API rel. 2.1

your card is 2.1, since 2.0 library used proprietary format and your platform likely failed to process previous GP install for load.


directory_component [2] (size: 31) {
        header_component        : 16
        directory_component     : 31
        applet_component        : 11
        import_component        : 41
        constant_pool_component : 598
        class_component : 108
        method_component        : 8622
        static_field_component  : 10
        reference_location_component    : 1011
        export_component        : 0
        descriptor_component    : 1663
        library_size    :12111
        image_size:       6
        array_init_count: 0
        array_init_size:  0
        import_count    :4
        applet_count    :1
        custom_count    :0
}

- this component lists the size of all components, you can estimate that on-card size of the CAP file is about 8894 bytes. make sure the available free space is about or bigger than that figure (G+ tool can be required) if the left EEPROM is less (far less) than that figure, the 6985h is quite normal.


applet_component [3] (size: 11) {
        1 applet(s)
        A0000003230101
}

- the package contains a single applet whose module AID is A0000003230101


import_component [4] (size: 41) {
        4 imported packages
        A0000000620101 1.2
        A0000000620102 1.2
        A0000000620201 1.2
        A0000000620001 1.0
}

- this component lists the packages imported by the applet (whose to which your applet is linked).

A0000000620101 is "javacard.framework", rel. 1.2 means API 2.2.1
A0000000620102 is "javacard.security", rel. 1.2 means API 2.2
A0000000620201 is "javacardx.crypto", rel. 1.2 means API 2.2
A0000000620001 is "java.lang", rel. 1.0 means API 2.1

so the applet requires the platform to be at least compliant with JavaCard 2.2.1
if the card is only 2.2, 6985h is also normal.

if you compile / convert the applet yourself and if you are sure it does not need 2.2.1 (but only 2.2 or 2.1) reconvert it with the 2.2 (or 2.1) export files; each JVC-SDK comes with a set of EXP files that does contain theses versions that are stored into the generated CAP file, if you use a too recent definition, you won't be able to load CAP files onto card built with a previous version.

Sylvain.


_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle

Reply via email to