Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 235 Big Data Appliance
- 1.9K Data Science
- 449.9K Databases
- 221.6K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 533 SQLcl
- 4K SQL Developer Data Modeler
- 186.9K SQL & PL/SQL
- 21.3K SQL Developer
- 295.5K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.2K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 154 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 158 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 402 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 230 Portuguese
Problem with wallet example

Hello,
I'm trying to understand the Wallet example with JCOP 3 tools but I have some issues.
The script line
// create wallet applet
0x80 0xB8 0x00 0x00 0x14 0x0a 0xa0 0x00 0x00 0x00 0x62 0x03 0x1 0x0c 0x06 0x01 0x08 0x00 0x00 0x05 0x01 0x02 0x03 0x04 0x05 0x7F;
--------------------------------------------------------------------------------------------------
Part of the file Wallet.java
private Wallet(byte[] bArray, short bOffset, byte bLength) {
pin = new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE);
byte iLen = bArray[bOffset]; // aid length
bOffset = (short) (bOffset + iLen + 1);
byte cLen = bArray[bOffset]; // info length
bOffset = (short) (bOffset + cLen + 1);
byte aLen = bArray[bOffset]; // applet data length
pin.update(bArray, (short) (bOffset + 1), aLen);
register();
} // end of the constructor
What are the values of: initial bOff, iLen, cLen, aLen and final bOff ???
Because assuming that
AID = 0xa0 0x00 0x00 0x00 0x62 0x03 0x1 0x0c 0x06 0x01
bOffset = 5 // initial bOffset
bArray = 0x80 0xB8 0x00 0x00 0x14 0x0a 0xa0 0x00 0x00 0x00 0x62 0x03 0x1 0x0c 0x06 0x01 0x08 0x00 0x00 0x05 0x01 0x02 0x03 0x04 0x05 0x7F
Then
iLen = bArray[bOffset] = bArray[5] = 0x0A = 10 (in decimal) // OK aid length !!!
bOffset = (short) (bOffset + iLen + 1) = 5 + 10 + 1 = 16 (in decimal)
cLen = bArray[bOffset] = bArray[16] = 0x08 = 8 (in decimal) // OK info length !!
bOffset = (short) (bOffset + cLen + 1) = 16 + 8 + 1 = 25 (in decimal)
aLen = bArray[bOffset] = bArray[25] = 0x7F // Error !!! It is different from the applet data length
And final bOffset is not 25 (as calculated) but 19 because bArray[19] = 0x05 = aLen
I dont understand
aLen = 0x7F ??? But aLen = 0x05 = 5 (in decimal) how is it possible ???
And final bOffset = 25 ??? But the correct final bOffset = 19
Can anyone help me please???