Claims
- 1. A method for communicating program data between a first device and a second device, the method comprising:
disassembling a first program file comprising program data into at least one logical data unit; partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; and computing a first fingerprint over the payload portion of said at least one protocol data unit of said at least one logical data unit.
- 2. The method of claim 1 wherein said second device comprises a loading terminal configured to communicate with a smart card.
- 3. The method of claim 1, further comprising communicating a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising said first fingerprint and an authentication code based at least in part on said first fingerprint.
- 4. The method of claim 1 wherein said program data comprises a class file.
- 5. The method of claim 1 wherein said program file comprises a JAR file.
- 6. The method of claim 1 wherein said program file comprises a CAP file.
- 7. The method of claim 1 wherein said method further comprises creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 8. The method of claim 3 wherein said authentication code further comprises at least one loading device authentication code for use by said second device in authenticating said second program file received from said first device.
- 9. The method of claim 3 wherein said authentication code further comprises at least one target device authentication code for use by a third device in authenticating data received from said second device, said received data based at least in part on said first program file.
- 10. The method of claim 1 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 11. The method of claim 10 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 12. The method of claim 10 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 13. The method of claim 10 wherein said APDUs comprise information identifying the context of said APDUs.
- 14. The method of claim 1 wherein said first fingerprint comprises a checksum.
- 15. The method of claim 1 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 16. The method of claim 1 wherein said first fingerprint comprises a message digest.
- 17. The method of claim 1 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 18. A method for communicating program data between a first device and a second device, the method comprising:
receiving a program file comprising program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; disassembling said program data into at least one logical data unit; and partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion.
- 19. The method of claim 18, further comprising communicating to said second device one or more members of the group comprising said first fingerprint and said first authentication code.
- 20. The method of claim 18 wherein said first device comprises a loading terminal; and said second device comprises a smart card.
- 21. The method of claim 20 wherein said smart card comprises a Java Card™ technology-enabled smart card.
- 22. The method of claim 20 wherein said smart card comprises a CDMA (Code Division Multiple Access) technology-enabled smart card.
- 23. The method of claim 20 wherein said smart card comprises a SIM (Subscriber Identity Module) card.
- 24. The method of claim 20 wherein said smart card comprises a WIM (Wireless Interface Module).
- 25. The method of claim 20 wherein said smart card comprises a USIM (Universal Subscriber Identity Module).
- 26. The method of claim 20 wherein said smart card comprises a UIM (User Identity Module).
- 27. The method of claim 20 wherein said smart card comprises a R-UIM (Removable User Identity Module).
- 28. The method of claim 18 wherein said program data comprises a class file.
- 29. The method of claim 18 wherein said program file comprises a JAR file.
- 30. The method of claim 18 wherein said program file comprises a CAP file.
- 31. The method of claim 18 wherein said method further comprises creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit and extracted from said program file.
- 32. The method of claim 18 wherein said method further comprises:
computing verification data for at least one of said at least one logical data unit; and creating a verification protocol data unit comprising said verification data for said logical data unit.
- 33. The method of claim 18 wherein said method further comprises creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data unit comprising link data for said logical data unit.
- 34. The method of claim 18 wherein said method further comprises:
creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; and creating a verification protocol data unit comprising said verification data for said logical data unit and extracted from said program file.
- 35. The method of claim 18 wherein said method further comprises:
creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; computing verification data for at least one of said at least one logical data unit; and creating a verification protocol data unit comprising said verification data for said logical data unit.
- 36. The method of claim 18, further comprising receiving from said second device an indication of whether said first fingerprint matches a second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 37. The method of claim 18, further comprising receiving from said second device an indication of whether said one or more members match a second authentication code based at least in part on a second fingerprint, said second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 38. The method of claim 18 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 39. The method of claim 38 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 40. The method of claim 38 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 41. The method of claim 38 wherein said APDUs comprise information identifying the context of said APDUs.
- 42. The method of claim 18 wherein said first fingerprint comprises a checksum.
- 43. The method of claim 18 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 44. The method of claim 18 wherein said first fingerprint comprises a message digest.
- 45. The method of claim 18 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 46. A method for communicating program data between a first device and a second device comprising a memory, the method comprising:
communicating a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; receiving said one or more members and a plurality of protocol data units comprising at least one logical data unit of a program file, each of said at least one logical data unit partitioned into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; computing a second fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and committing said program to said memory based at least in part on whether said one or more members match said second fingerprint or a second authentication code based at least in part on said second fingerprint.
- 47. The method of claim 46 wherein said method further comprises excluding from said computing a protocol data unit that comprises link data.
- 48. The method of claim 46 wherein said method further comprises excluding from said computing a protocol data unit that comprises verification data if a flag indicates verification data should be excluded from an authentication fingerprint computation.
- 49. The method of claim 46 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 50. The method of claim 49 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 51. The method of claim 49 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 52. The method of claim 49 wherein said APDUs comprise information identifying the context of said APDUs.
- 53. The method of claim 46 wherein said first fingerprint comprises a checksum; and
said second fingerprint comprises a checksum.
- 54. The method of claim 46 wherein said first fingerprint comprises a cyclic redundancy code (CRC); and
said second fingerprint comprises a CRC.
- 55. The method of claim 46 wherein said first fingerprint comprises a message digest; and
said second fingerprint comprises a message digest.
- 56. The method of claim 46 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC); and
said second fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 57. A method for communicating program data between a first device and a second device, the method comprising:
disassembling a first program file comprising program data into at least one logical data unit; partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; computing a first fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and communicating said protocol data units of said at least one logical data unit and one or more of the group comprising said first fingerprint and a first authentication code based at least in part on said first fingerprint to said second device according to said protocol.
- 58. The method of claim 57 wherein said program data comprises a class file.
- 59. The method of claim 57 wherein said program file comprises a JAR file.
- 60. The method of claim 57 wherein said program file comprises a CAP file.
- 61. The method of claim 57 wherein said method further comprises creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 62. The method of claim 57, further comprising receiving from said second device an indication of whether said one or more members matches a second fingerprint computed over the payload portion of the protocol data units received by said second device, or a second authentication code based at least in part on said second fingerprint.
- 63. The method of claim 57 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 64. The method of claim 63 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 65. The method of claim 63 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 66. The method of claim 63 wherein said APDUs comprise information identifying the context of said APDUs.
- 67. The method of claim 57 wherein said first fingerprint comprises a checksum.
- 68. The method of claim 57 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 69. The method of claim 57 wherein said first fingerprint comprises a message digest.
- 70. The method of claim 57 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 71. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method for communicating program data between a host computer and a smart card, the method comprising:
disassembling a first program file comprising program data into at least one logical data unit; partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; and computing a first fingerprint over the payload portion of said at least one protocol data unit of said at least one logical data unit.
- 72. The program storage device of claim 71 wherein said second device comprises a loading terminal configured to communicate with a smart card.
- 73. The program storage device of claim 71, said method further comprising communicating a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising said first fingerprint and an authentication code based at least in part on said first fingerprint.
- 74. The program storage device of claim 71 wherein said program data comprises a class file.
- 75. The program storage device of claim 71 wherein said program file comprises a JAR file.
- 76. The program storage device of claim 71 wherein said program file comprises a CAP file.
- 77. The program storage device of claim 71 wherein said method further comprises creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 78. The program storage device of claim 73 wherein said authentication code further comprises at least one loading device authentication code for use by said second device in authenticating said second program file received from said first device.
- 79. The program storage device of claim 73 wherein said authentication code further comprises at least one target device authentication code for use by a third device in authenticating data received from said second device, said received data based at least in part on said first program file.
- 80. The program storage device of claim 71 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 81. The program storage device of claim 80 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 82. The program storage device of claim 80 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 83. The program storage device of claim 80 wherein said APDUs comprise information identifying the context of said APDUs.
- 84. The program storage device of claim 71 wherein said first fingerprint comprises a checksum.
- 85. The program storage device of claim 71 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 86. The program storage device of claim 71 wherein said first fingerprint comprises a message digest.
- 87. The program storage device of claim 71 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 88. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method for communicating program data between a first device and a second device, the method comprising:
receiving a program file comprising program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; disassembling said program data into at least one logical data unit; and partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion.
- 89. The program storage device of claim 88 wherein said method further comprises communicating to said second device one or more members of the group comprising said first fingerprint and said first authentication code.
- 90. The program storage device of claim 88 wherein said first device comprises a loading terminal; and
said second device comprises a smart card.
- 91. The program storage device of claim 90 wherein said smart card comprises a Java Card™ technology-enabled smart card.
- 92. The program storage device of claim 90 wherein said smart card comprises a CDMA (Code Division Multiple Access) technology-enabled smart card.
- 93. The program storage device of claim 90 wherein said smart card comprises a SIM (Subscriber Identity Module) card.
- 94. The program storage device of claim 90 wherein said smart card comprises a WIM (Wireless Interface Module).
- 95. The program storage device of claim 90 wherein said smart card comprises a USIM (Universal Subscriber Identity Module).
- 96. The program storage device of claim 90 wherein said smart card comprises a UIM (User Identity Module).
- 97. The program storage device of claim 90 wherein said smart card comprises a R-UIM (Removable User Identity Module).
- 98. The program storage device of claim 88 wherein said program data comprises a class file.
- 99. The program storage device of claim 88 wherein said program file comprises a JAR file.
- 100. The program storage device of claim 88 wherein said program file comprises a CAP file.
- 101. The program storage device of claim 88 wherein said method further comprises creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit and extracted from said program file.
- 102. The program storage device of claim 88 wherein said method further comprises:
computing verification data for at least one of said at least one logical data unit; and creating a verification protocol data unit comprising said verification data for said logical data unit.
- 103. The program storage device of claim 88 wherein said method further comprises creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data unit comprising link data for said logical data unit.
- 104. The program storage device of claim 88 wherein said method further comprises:
creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; and creating a verification protocol data unit comprising said verification data for said logical data unit and extracted from said program file.
- 105. The program storage device of claim 88 wherein said method further comprises:
creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit, computing verification data for at least one of said at least one logical data unit; and creating a verification protocol data unit comprising said verification data for said logical data unit.
- 106. The program storage device of claim 88 wherein said method further comprises receiving from said second device an indication of whether said first fingerprint matches a second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 107. The program storage device of claim 88 wherein said method further comprises receiving from said second device an indication of whether said one or more members match a second authentication code based at least in part on a second fingerprint, said second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 108. The program storage device of claim 88 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 109. The program storage device of claim 108 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 110. The program storage device of claim 108 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 111. The program storage device of claim 108 wherein said APDUs comprise information identifying the context of said APDUs.
- 112. The program storage device of claim 88 wherein said first fingerprint comprises a checksum.
- 113. The program storage device of claim 88 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 114. The program storage device of claim 88 wherein said first fingerprint comprises a message digest.
- 115. The program storage device of claim 88 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 116. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method for communicating program data between a first device and a second device comprising a memory, the method comprising:
communicating a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; receiving said one or more members and a plurality of protocol data units comprising at least one logical data unit of a program file, each of said at least one logical data unit partitioned into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; computing a second fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and committing said program to said memory based at least in part on whether said one or more members match said second fingerprint or a second authentication code based at least in part on said second fingerprint.
- 117. The program storage device of claim 116 wherein said method further comprises excluding from said computing a protocol data unit that comprises link data.
- 118. The program storage device of claim 116 wherein said method further comprises excluding from said computing a protocol data unit that comprises verification data if a flag indicates verification data should be excluded from an authentication fingerprint computation.
- 119. The program storage device of claim 116 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 120. The program storage device of claim 119 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 121. The program storage device of claim 119 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 122. The program storage device of claim 119 wherein said APDUs comprise information identifying the context of said APDUs.
- 123. The program storage device of claim 116 wherein said first fingerprint comprises a checksum; and
said second fingerprint comprises a checksum.
- 124. The program storage device of claim 116 wherein said first fingerprint comprises a cyclic redundancy code (CRC); and
said second fingerprint comprises a CRC.
- 125. The program storage device of claim 116 wherein said first fingerprint comprises a message digest; and
said second fingerprint comprises a message digest.
- 126. The program storage device of claim 116 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC); and
said second fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 127. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method for communicating program data between a first device and a second device, the method comprising:
disassembling a first program file comprising program data into at least one logical data unit; partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; computing a first fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and communicating said protocol data units of said at least one logical data unit and one or more of the group comprising said first fingerprint and a first authentication code based at least in part on said first fingerprint to said second device according to said protocol.
- 128. The program storage device of claim 127 wherein said program data comprises a class file.
- 129. The program storage device of claim 127 wherein said program file comprises a JAR file.
- 130. The program storage device of claim 127 wherein said program file comprises a CAP file.
- 131. The program storage device of claim 127 wherein said method further comprises creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 132. The program storage device of claim 127 wherein said method further comprises receiving from said second device an indication of whether said one or more members matches a second fingerprint computed over the payload portion of the protocol data units received by said second device, or a second authentication code based at least in part on said second fingerprint.
- 133. The program storage device of claim 127 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 134. The program storage device of claim 63 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 135. The program storage device of claim 63 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 136. The program storage device of claim 63 wherein said APDUs comprise information identifying the context of said APDUs.
- 137. The program storage device of claim 127 wherein said first fingerprint comprises a checksum.
- 138. The program storage device of claim 127 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 139. The program storage device of claim 127 wherein said first fingerprint comprises a message digest.
- 140. The program storage device of claim 127 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 141. An apparatus for communicating program data between a first device and a second device, the apparatus comprising:
means for disassembling a first program file comprising program data into at least one logical data unit; means for partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; and means for computing a first fingerprint over the payload portion of said at least one protocol data unit of said at least one logical data unit.
- 142. The apparatus of claim 141 wherein said second device comprises a loading terminal configured to communicate with a smart card.
- 143. The apparatus of claim 141, further comprising means for communicating a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising said first fingerprint and an authentication code based at least in part on said first fingerprint.
- 144. The apparatus of claim 141 wherein said program data comprises a class file.
- 145. The apparatus of claim 141 wherein said program file comprises a JAR file.
- 146. The apparatus of claim 141 wherein said program file comprises a CAP file.
- 147. The apparatus of claim 141 wherein said apparatus further comprises means for creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 148. The apparatus of claim 143 wherein said authentication code further comprises at least one loading device authentication code for use by said second device in authenticating said second program file received from said first device.
- 149. The apparatus of claim 143 wherein said authentication code further comprises at least one target device authentication code for use by a third device in authenticating data received from said second device, said received data based at least in part on said first program file.
- 150. The apparatus of claim 141 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 151. The apparatus of claim 150 wherein said protocol further comprises means for using a trailer APDU to indicate a last APDU associated with a program unit.
- 152. The apparatus of claim 150 wherein said protocol further comprises means for using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 153. The apparatus of claim 150 wherein said APDUs comprise information identifying the context of said APDUs.
- 154. The apparatus of claim 141 wherein said first fingerprint comprises a checksum.
- 155. The apparatus of claim 141 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 156. The apparatus of claim 141 wherein said first fingerprint comprises a message digest.
- 157. The apparatus of claim 141 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 158. An apparatus for communicating program data between a first device and a second device, the apparatus comprising:
means for receiving a program file comprising program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; means for disassembling said program data into at least one logical data unit; and means for partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion.
- 159. The apparatus of claim 158, further comprising means for communicating to said second device one or more members of the group comprising said first fingerprint and said first authentication code.
- 160. The apparatus of claim 158 wherein said first device comprises a loading terminal; and
said second device comprises a smart card.
- 161. The apparatus of claim 160 wherein said smart card comprises a Java Card™ technology-enabled smart card.
- 162. The apparatus of claim 160 wherein said smart card comprises a CDMA (Code Division Multiple Access) technology-enabled smart card.
- 163. The apparatus of claim 160 wherein said smart card comprises a SIM (Subscriber Identity Module) card.
- 164. The apparatus of claim 160 wherein said smart card comprises a WIM (Wireless Interface Module).
- 165. The apparatus of claim 160 wherein said smart card comprises a USIM (Universal Subscriber Identity Module).
- 166. The apparatus of claim 160 wherein said smart card comprises a UIM (User Identity Module).
- 167. The apparatus of claim 160 wherein said smart card comprises a R-UIM (Removable User Identity Module).
- 168. The apparatus of claim 158 wherein said program data comprises a class file.
- 169. The apparatus of claim 158 wherein said program file comprises a JAR file.
- 170. The apparatus of claim 158 wherein said program file comprises a CAP file.
- 171. The apparatus of claim 158 wherein said apparatus further comprises means for creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit and extracted from said program file.
- 172. The apparatus of claim 158 wherein said apparatus further comprises:
means for computing verification data for at least one of said at least one logical data unit; and means for creating a verification protocol data unit comprising said verification data for said logical data unit.
- 173. The apparatus of claim 158 wherein said apparatus further comprises means for creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data unit comprising link data for said logical data unit.
- 174. The apparatus of claim 158 wherein said apparatus further comprises:
means for creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; and means for creating a verification protocol data unit comprising said verification data for said logical data unit and extracted from said program file.
- 175. The apparatus of claim 158 wherein said apparatus further comprises:
means for creating at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; means for computing verification data for at least one of said at least one logical data unit; and means for creating a verification protocol data unit comprising said verification data for said logical data unit.
- 176. The apparatus of claim 158, further comprising means for receiving from said second device an indication of whether said first fingerprint matches a second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 177. The apparatus of claim 158, further comprising means for receiving from said second device an indication of whether said one or more members match a second authentication code based at least in part on a second fingerprint, said second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 178. The apparatus of claim 158 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 179. The apparatus of claim 178 wherein said protocol further comprises means for using a trailer APDU to indicate a last APDU associated with a program unit.
- 180. The apparatus of claim 178 wherein said protocol further comprises means for using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 181. The apparatus of claim 178 wherein said APDUs comprise information identifying the context of said APDUs.
- 182. The apparatus of claim 158 wherein said first fingerprint comprises a checksum.
- 183. The apparatus of claim 158 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 184. The apparatus of claim 158 wherein said first fingerprint comprises a message digest.
- 185. The apparatus of claim 158 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 186. An apparatus for communicating program data between a first device and a second device comprising a memory, the apparatus comprising:
means for communicating a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; means for receiving said one or more members and a plurality of protocol data units comprising at least one logical data unit of a program file, each of said at least one logical data unit partitioned into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; means for computing a second fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and means for committing said program to said memory based at least in part on whether said one or more members match said second fingerprint or a second authentication code based at least in part on said second fingerprint.
- 187. The apparatus of claim 186 wherein said apparatus further comprises means for excluding from said computing a protocol data unit that comprises link data.
- 188. The apparatus of claim 186 wherein said apparatus further comprises means for excluding from said computing a protocol data unit that comprises verification data if a flag indicates verification data should be excluded from an authentication fingerprint computation.
- 189. The apparatus of claim 186 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 190. The apparatus of claim 189 wherein said protocol further comprises means for using a trailer APDU to indicate a last APDU associated with a program unit.
- 191. The apparatus of claim 189 wherein said protocol further comprises means for using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 192. The apparatus of claim 189 wherein said APDUs comprise information identifying the context of said APDUS.
- 193. The apparatus of claim 186 wherein
said first fingerprint comprises a checksum; and said second fingerprint comprises a checksum.
- 194. The apparatus of claim 186 wherein
said first fingerprint comprises a cyclic redundancy code (CRC); and said second fingerprint comprises a CRC.
- 195. The apparatus of claim 186 wherein
said first fingerprint comprises a message digest; and said second fingerprint comprises a message digest.
- 196. The apparatus of claim 186 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC); and
said second fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 197. An apparatus for communicating program data between a first device and a second device, the apparatus comprising:
means for disassembling a first program file comprising program data into at least one logical data unit; means for partitioning each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; means for computing a first fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and means for communicating said protocol data units of said at least one logical data unit and one or more of the group comprising said first fingerprint and a first authentication code based at least in part on said first fingerprint to said second device according to said protocol.
- 198. The apparatus of claim 197 wherein said program data comprises a class file.
- 199. The apparatus of claim 197 wherein said program file comprises a JAR file.
- 200. The apparatus of claim 197 wherein said program file comprises a CAP file.
- 201. The apparatus of claim 197 wherein said apparatus further comprises means for creating at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 202. The apparatus of claim 197, further comprising means for receiving from said second device an indication of whether said one or more members matches a second fingerprint computed over the payload portion of the protocol data units received by said second device, or a second authentication code based at least in part on said second fingerprint.
- 203. The apparatus of claim 197 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 204. The apparatus of claim 203 wherein said protocol further comprises means for using a trailer APDU to indicate a last APDU associated with a program unit.
- 205. The apparatus of claim 203 wherein said protocol further comprises means for using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 206. The apparatus of claim 203 wherein said APDUs comprise information identifying the context of said APDUs.
- 207. The apparatus of claim 197 wherein said first fingerprint comprises a checksum.
- 208. The apparatus of claim 197 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 209. The apparatus of claim 197 wherein said first fingerprint comprises a message digest.
- 210. The apparatus of claim 197 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 211. An apparatus for communicating program data between a first device and a second device, the apparatus comprising:
a memory for storing said program data; and an off-card installer configured to:
disassemble a first program file comprising program data into at least one logical data unit; partition each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; and compute a first fingerprint over the payload portion of said at least one protocol data unit of said at least one logical data unit.
- 212. The apparatus of claim 211 wherein said second device comprises a loading terminal configured to communicate with a smart card.
- 213. The apparatus of claim 211 wherein said off-card installer is further configured to communicate a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising said first fingerprint and an authentication code based at least in part on said first fingerprint.
- 214. The apparatus of claim 211 wherein said program data comprises a class file.
- 215. The apparatus of claim 211 wherein said program file comprises a JAR file.
- 216. The apparatus of claim 211 wherein said program file comprises a CAP file.
- 217. The apparatus of claim 211 wherein said off-card installer is further configured to create at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 218. The apparatus of claim 213 wherein said authentication code further comprises at least one loading device authentication code for use by said second device in authenticating said second program file received from said first device.
- 219. The apparatus of claim 213 wherein said authentication code further comprises at least one target device authentication code for use by a third device in authenticating data received from said second device, said received data based at least in part on said first program file.
- 220. The apparatus of claim 211 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 221. The apparatus of claim 220 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 222. The apparatus of claim 220 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 223. The apparatus of claim 220 wherein said APDUs comprise information identifying the context of said APDUs.
- 224. The apparatus of claim 211 wherein said first fingerprint comprises a checksum.
- 225. The apparatus of claim 211 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 226. The apparatus of claim 211 wherein said first fingerprint comprises a message digest.
- 227. The apparatus of claim 211 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 228. An apparatus for communicating program data between a first device and a second device, the apparatus comprising:
a memory for storing said program data; and a processor configured to: receive a program file comprising program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; disassemble said program data into at least one logical data unit; and partition each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion.
- 229. The apparatus of claim 228 wherein said processor is further configured to communicate to said second device one or more members of the group comprising said first fingerprint and said first authentication code.
- 230. The apparatus of claim 228 wherein said first device comprises a loading terminal; and said second device comprises a smart card.
- 231. The apparatus of claim 230 wherein said smart card comprises a Java Card™technology-enabled smart card.
- 232. The apparatus of claim 230 wherein said smart card comprises a CDMA (Code Division Multiple Access) technology-enabled smart card.
- 233. The apparatus of claim 230 wherein said smart card comprises a SIM (Subscriber Identity Module) card.
- 234. The apparatus of claim 230 wherein said smart card comprises a WIM (Wireless Interface Module).
- 235. The apparatus of claim 230 wherein said smart card comprises a USIM (Universal Subscriber Identity Module).
- 236. The apparatus of claim 230 wherein said smart card comprises a UIM (User Identity Module).
- 237. The apparatus of claim 230 wherein said smart card comprises a R-UIM (Removable User Identity Module).
- 238. The apparatus of claim 228 wherein said program data comprises a class file.
- 239. The apparatus of claim 228 wherein said program file comprises a JAR file.
- 240. The apparatus of claim 228 wherein said program file comprises a CAP file.
- 241. The apparatus of claim 228 wherein said processor is further configured to create at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit and extracted from said program file.
- 242. The apparatus of claim 228 wherein said processor is further configured to:
compute verification data for at least one of said at least one logical data unit; and create a verification protocol data unit comprising said verification data for said logical data unit.
- 243. The apparatus of claim 228 wherein said processor is further configured to create at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data unit comprising link data for said logical data unit.
- 244. The apparatus of claim 228 wherein said processor is further configured to:
create at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; and create a verification protocol data unit comprising said verification data for said logical data unit and extracted from said program file.
- 245. The apparatus of claim 228 wherein said said processor is further configured to:
create at least one link protocol data unit associated with one of said at least one logical data unit, said link protocol data comprising link data for said logical data unit; compute verification data for at least one of said at least one logical data unit; and create a verification protocol data unit comprising said verification data for said logical data unit.
- 246. The apparatus of claim 228 wherein said processor is further configured to receive from said second device an indication of whether said first fingerprint matches a second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 247. The apparatus of claim 228 wherein said processor is further configured to receive from said second device an indication of whether said one or more members match a second authentication code based at least in part on a second fingerprint, said second fingerprint computed over the payload portion of the protocol data units received by said second device.
- 248. The apparatus of claim 228 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 249. The apparatus of claim 248 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 250. The apparatus of claim 248 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 251. The apparatus of claim 248 wherein said APDUs comprise information identifying the context of said APDUs.
- 252. The apparatus of claim 228 wherein said first fingerprint comprises a checksum.
- 253. The apparatus of claim 228 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 254. The apparatus of claim 228 wherein said first fingerprint comprises a message digest.
- 255. The apparatus of claim 228 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 256. An apparatus for communicating program data between a first device and a second device comprising a memory, the apparatus comprising:
a memory for storing said program data; and an installer configured to: communicate a second program file to a second device, said second program file comprising said program data and one or more members of the group comprising a first fingerprint and a first authentication code based at least in part on said first fingerprint; receive said one or more members and a plurality of protocol data units comprising at least one logical data unit of a program file, each of said at least one logical data unit partitioned into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; compute a second fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and commit said program to said memory based at least in part on whether said one or more members match said second fingerprint or a second authentication code based at least in part on said second fingerprint.
- 257. The apparatus of claim 256 wherein said installer is further configured to exclude from said computing a protocol data unit that comprises link data.
- 258. The apparatus of claim 256 wherein said installer is further configured to exclude from said computing a protocol data unit that comprises verification data if a flag indicates verification data should be excluded from an authentication fingerprint computation.
- 259. The apparatus of claim 256 wherein said protocol comprises an application protocol data unit (APDU) protocol; and
said protocol data units comprise application protocol data units (APDUs).
- 260. The apparatus of claim 259 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 261. The apparatus of claim 259 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 262. The apparatus of claim 259 wherein said APDUs comprise information identifying the context of said APDUs.
- 263. The apparatus of claim 256 wherein said first fingerprint comprises a checksum; and
said second fingerprint comprises a checksum.
- 264. The apparatus of claim 256 wherein said first fingerprint comprises a cyclic redundancy code (CRC); and
said second fingerprint comprises a CRC.
- 265. The apparatus of claim 256 wherein said first fingerprint comprises a message digest; and
said second fingerprint comprises a message digest.
- 266. The apparatus of claim 256 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC); and
said second fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 267. An apparatus for communicating program data between a first device and a second device, the apparatus comprising:
a memory for storing said program data; an off-card installer configured to: disassemble a first program file comprising program data into at least one logical data unit; partition each of said at least one logical data unit into at least one protocol data unit, the format of said at least one protocol data unit defined by a communication protocol and including a payload portion; compute a first fingerprint over the payload portion of the protocol data units of said at least one logical data unit; and communicate said protocol data units of said at least one logical data unit and one or more of the group comprising said first fingerprint and a first authentication code based at least in part on said first fingerprint to said second device according to said protocol.
- 268. The apparatus of claim 267 wherein said program data comprises a class file.
- 269. The apparatus of claim 267 wherein said program file comprises a JAR file.
- 270. The apparatus of claim 267 wherein said program file comprises a CAP file.
- 271. The apparatus of claim 267 wherein said off-card installer is further configured to create at least one verification protocol data unit associated with one of said at least one logical data unit, said verification protocol data unit comprising verification data for said logical data unit.
- 272. The apparatus of claim 267 wherein said off-card installer is further configured to receive from said second device an indication of whether said one or more members matches a second fingerprint computed over the payload portion of the protocol data units received by said second device, or a second authentication code based at least in part on said second fingerprint.
- 273. The apparatus of claim 267 wherein
said protocol comprises an application protocol data unit (APDU) protocol; and said protocol data units comprise application protocol data units (APDUs).
- 274. The apparatus of claim 273 wherein said protocol further comprises using a trailer APDU to indicate a last APDU associated with a program unit.
- 275. The apparatus of claim 273 wherein said protocol further comprises using a header APDU to indicate an expected sequence of one or more logical program APDUs to follow said header APDU.
- 276. The apparatus of claim 273 wherein said APDUs comprise information identifying the context of said APDUs.
- 277. The apparatus of claim 267 wherein said first fingerprint comprises a checksum.
- 278. The apparatus of claim 267 wherein said first fingerprint comprises a cyclic redundancy code (CRC).
- 279. The apparatus of claim 267 wherein said first fingerprint comprises a message digest.
- 280. The apparatus of claim 267 wherein said first fingerprint comprises a keyed hash-based message authentication code (HMAC).
- 281. An apparatus for automatic computation of a digital fingerprint, the apparatus comprising:
a memory dedicated for storing program data; a computation unit in communication with said memory and configured to incrementally compute a digital fingerprint over data stored in said memory.
- 282. The apparatus of claim 281 wherein said computation unit is further configured to incrementally compute said digital fingerprint upon detecting a write operation to said memory.
- 283. The apparatus of claim 281 wherein said computation unit is further configured to incrementally compute a digital fingerprint upon receiving a read request for data stored in said memory.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to the following:
[0002] U.S. patent application Ser. No. ______, filed Jan. 16, 2003 in the name of inventor Eduard de Jong, entitled “System for Communicating Program Data Between a First Device and a Second Device”, Attorney Docket No. SUN-P7013, commonly assigned herewith.
[0003] U.S. patent application Ser. No. ______, filed Jan. 16, 2003 in the name of inventor Eduard de Jong, entitled “Using a Digital Fingerprint to Commit Loaded Data in a Device”, Attorney Docket No. SUN-P8714, commonly assigned herewith.
[0004] U.S. patent application Ser. No. ______, filed Jan. 16, 2003 in the name of inventor Eduard de Jong, entitled “Ordering Program Data for Loading on a Device”, Attorney Docket No. SUN-P8715, commonly assigned herewith.
[0005] U.S. patent application Ser. No. ______, filed Jan. 16, 2003 in the name of inventor Eduard de Jong, entitled “Optimized Representation of Data Type Information in Program Verification”, Attorney Docket No. SUN-P8716, commonly assigned herewith.
[0006] U.S. patent application Ser. No. ______, filed Jan. 16, 2003 in the name of inventor Eduard de Jong, entitled “Run Time Code Integrity Checks”, Attorney Docket No. SUN-P8717, commonly assigned herewith.
[0007] U.S. patent application Ser. No. ______, filed Jan. 16, 2003 in the name of inventor Eduard de Jong, entitled “Linking of Virtual Methods”, Attorney Docket No. SUN-P8718, commonly assigned herewith.