EP1481377A2 - Iterative serialisation procedure for structured software objects - Google Patents
Iterative serialisation procedure for structured software objectsInfo
- Publication number
- EP1481377A2 EP1481377A2 EP03704871A EP03704871A EP1481377A2 EP 1481377 A2 EP1481377 A2 EP 1481377A2 EP 03704871 A EP03704871 A EP 03704871A EP 03704871 A EP03704871 A EP 03704871A EP 1481377 A2 EP1481377 A2 EP 1481377A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- data
- structured
- agent
- embedded platform
- procedure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
- G06Q20/355—Personalisation of cards for use
- G06Q20/3552—Downloading or loading of personalisation data
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/10—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
- G07F7/1008—Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
Definitions
- This invention concerns an iterative procedure for conversion of structured software objects into a raw data flow and vice versa, providing for their direct transfer using simple communication facilities such as those of an embedded computer station, and reset of said software objects or reutilisation of memory space allocated to them.
- Witxiin an application programmed in a high-level language, and in particular in structured or object-oriented languages such as Java®, a large proportion of the data used or processed is organised and stored in the form of software objects with a precise structure, more complex than a simple sequence of bytes.
- Such objects can contain a number of variables or data groups, for example in the form of simple types, such as characters ("char” type) or integers ("int” type), or basic object types or types defined by the programmer, character strings ("string” type), or arrays (“array” type) with one or more dimensions of the types defined above.
- Structured objects of this type can therefore be defined or represented by a tree structure grouping various objects themselves of varying types, the organisation of a structure of this kind sometimes being referred to as the object composition graph.
- An object type can be defined "by inheritance” from the definition of another type (generally referred to as a "super-type”), and all types can be represented in the form of a tree structure referred to as the inheritance graph.
- numerous computer applications incorporate communication between a computer terminal and possibly a computer network on the one hand, and a portable object or embedded platform with data processing capabilities, such as a bank, telephone subscription or health care management smart card, or a computerised identification, marking or toll device on the other.
- a computer terminal and possibly a computer network on the one hand
- a portable object or embedded platform with data processing capabilities such as a bank, telephone subscription or health care management smart card, or a computerised identification, marking or toll device on the other.
- Such portable objects incorporate, in particular, a processor associated with storage devices, containing at least one application program and with facilities for corrrmunication with one or more terminals.
- These communication facilities are based for example on a transmission of electronic data using different types of technology, such as electrical contacts, radio antenna, luminous or other forms of transmission, it being possible to combine a number of different types of transmission in the same portable object.
- the communication facilities regularly employed operate with simple protocols such as the APDU protocol to standard ISO 7816 for smart cards. Some of these protocols only provide for the transfer of simple type objects (in the form of integers or simple characters) as control parameters transmitted to or received in response from the object, or only at the initiative of the terminal or both.
- the APDU protocol only allows transfer of objects without types in raw data form, as bytes sent to the computerised portable object as control parameters, or obtained in response from the object, and only at the initiative of the terminal.
- JavaCard® incorporate internal functions, enabling them to exploit programmed application elements directly in high-level or object-oriented languages such as Java®, and to be integrated in centralised or distributed applications commumcating on an extended basis.
- the programmer of such an application must avoid using structured software objects, or provide for direct processing, and on a case-by- case basis, of the transfer of these objects to and from this embedded platform.
- serialisation procedures use a generic object type manager, implemented in the Java virtual machine (VM) executed on each hardware platform.
- VM Java virtual machine
- memory facilities are such that the serialisation procedures implemented in object-oriented prograimriing languages, such as Java, are not concerned with the size of the structured objects to be transmitted.
- the objects to be transmitted are serialised by the sender independently from their reception by the addressee, and the objects received can be deserialised by the addressee independently from the sender or the time of their transmission.
- Linear data streams are then transmitted and managed between sender and addressee by software mechanisms exterior to the programming environment. These streams can thus transit via high capacity buffers, and are managed by other software layers, for example by a protocol such as TCP/IP.
- One of the objectives of this invention is consequently to propose a procedure enabling the programmer of an application using an embedded platform, to have access to automated software tools enabling a software agent, or application element, stored or executed in a portable object of this type, to receive from or send to another agent, situated in another computer station, data organised in the form of structured software objects, in a case where the co ⁇ rmunication facilities between sender and receiver do not allow transfer of the structures composing said objects as such, but only to transfer data in a simpler form, and where the software and hardware resources of this embedded platform are not sufficient for enabling the use of a conventional serialisation procedure.
- a data conversion procedure which can be used by a computer station, or embedded platform, comprising a portable object incorporating at least a processor, storage facilities, and cornrnunication facilities capable of exchanging information with a terminal in the form of one or more linear data sequences, characterised in that it incorporates a data set conversion step, in one direction or another, between a linear data sequence arrangement on the one hand, and a structured arrangement, describing or representing one or more software objects structured or hierarchised according to the criteria of an object- oriented programming language on the other.
- the procedure includes the following steps: - conversion, or serialisation, of a first data set to be transmitted, incoiporating or representing one or more software objects, structured or hierarchised according to the criteria of an object- oriented prograimrring language, from a structured arrangement describing or representing this object to a linear data sequence representing this first data set;
- the host terminal sends information to the embedded platform using a software agent, referred to as a transmission function, said information being received in the embedded platform by a response function which can initiate processing of these data by at least one addressee software agent stored in the embedded platform, and forming part of at least one application, the procedure incorporating the following steps:
- the procedure incorporates the following steps:
- serialisation agent stored or executed in the embedded platform, of at least part of the data stored in this input stream into a data set comprising or representing at least one structured software object;
- the procedure incorporates the following steps:
- the linear data sequence stored in the input stream or output stream represents one or more software objects, structured or hierarchised using one or more data items referred to as tags, having one or more given values each representing a given action to be executed on deserialisation of said linear data sequence.
- At least one tag is defined as representing one of the following actions: - addition of a new element to the structure of the structured object represented by the linear data sequence;
- source object a reference to an element or object, referred to as source object, as being source of the value of all or part of an element making up the structured object; - indication that the following data item or items represent the content of an element making up the structured object;
- the serialisation agent serialises a structured object, referred to as source object, into a linear data set in accordance with a procedure, referred to as serialisation procedure, processing at least one of the objects, referred to as elements, making up the structure or tree structure of this structured source object, by the following steps: - detection by the serialisation agent of the type of an element, referred to as current object, making up the structure or tree structure of said structured object;
- the serialisation procedure converts a structured object to the output stream, storing the type of each current object in a memory stack, referred to as type stack, the locations of which are read in reverse order to their order of storage, by successive iterations of the procedure.
- the serialisation agent deserialises a linear data set into at least one structured result object, by means of a procedure, referred to as deserialisation procedure, which processes each of the data items stored in the input stream, by the following steps:
- One of the objectives of the invention is also to propose a structured object transfer procedure of this type, making it possible to transfer software objects between a host and embedded platform, where the operating environment of said embedded platform does not incorporate type manager for said structured objects.
- the deserialisation procedure includes the loading of an element, referred to as current object, namely assignment of a direct or indirect value to all or part of said current object, said element making up all or part of the structure of the structured result object, the termination of loading the current object initiating:
- the structured object created by the deserialisation procedure is considered as complete, and transmitted to the software agent or the application which is the addressee when the type stack is empty.
- the deserialisation operation corresponding to a data item representing a tag comprises the following steps:
- the type of stack used by the deserialisation procedure comprises a LIFO type stack, that is to say a stack where the locations are read in reverse order to the order in which they were stored.
- the deserialisation procedure comprises a step for creation of an element making up the structure of the structured result software object, by allocating a new memory space or reuse of a free allocation, said creation being performed by a type manager agent corresponding to the type of the element to be created.
- the creation step for an element making up the structure of the structured result software object occurs between the read step of a data item indicating the creation of this element, and the first loading step for said element.
- the action corresponding to a data item includes a step for storage of the value of this data item in the memory space allocated to the current object.
- an object index is attributed to at least one element making up the structure of the structured result object, said object index identifying said element uniquely, and making it possible for the element to be designated or referenced by other objects or elements.
- the action corresponding to a data item representing a tag comprises the following steps: - read of at least one subsequent data item in the input stream; - storage in the memory space allocated to the current object, following the data items already stored, of a data item designating an object as source of the value of all or part of the current object, said source object or element being identified by said subsequent data item.
- loading of the current object is considered to be terminated when the data stored in the memory space allocated to said object corresponds to a given length, said length being read from card memory by a type manager agent, or a manager agent for the types stored in the embedded platform.
- transmission of a linear data sequence of a given length by the embedded platform to the host is performed by an iterative procedure, referred to as data read procedure, comprising the following recursive steps:
- reception by the embedded platform of a linear data sequence of a given length from the host is executed following an iterative procedure, referred to as data write procedure, comprising the following recursive steps:
- the data write procedure also comprises the following steps:
- One of the objectives of the invention is also to propose a structured object transfer procedure of this type, making it possible to transfer software objects of a substantial size in relation to the possibilities of the communication facilities in terms of transfer or temporary storage, or software objects of unlimited size.
- This objective is achieved by the data conversion procedure described above, characterised in that at least two serialisation, deserialisation, data read or data write procedures are executed in parallel or interleaved by repeating a step comprising successive execution of at least one step of each of these procedures.
- the input stream, output stream or both are stored in the form of circular memory structures, the two streams sharing possibly the same circular structure.
- the embedded platform has a programmable environment capable of storing and executing at least one application created by a programmer, the communication function being compatible with the APDU format defined in standard ISO 7816.
- the deserialisation and consequent processing operations for an object received are initiated on reception of at least one APDU format command containing at least one data item indicating reception of a structured object.
- the embedded platform has a programmable environment compatible with the JavaCard® standard.
- At least one of the applications executed on the host or embedded platform is programmed in Java® language.
- the procedure is used for communication between at least one software agent, referred to as card agent, stored or executed in the embedded platform, and at least one software agent, referred to as card engine proxy agent, stored or executed in at least one host belonging to a computer network comrnunicating by asynchronous messages using an AAA- MOM type software infrastructure, said card engine proxy agent serving as an intermediary for the card agent for its corrrmunications with other agents in said network, said agents operating in accordance with the specifications of said software infrastructure and belonging to at least one distributed application.
- card agent stored or executed in the embedded platform
- card engine proxy agent stored or executed in at least one host belonging to a computer network comrnunicating by asynchronous messages using an AAA- MOM type software infrastructure
- said card engine proxy agent serving as an intermediary for the card agent for its corrrmunications with other agents in said network, said agents operating in accordance with the specifications of said software infrastructure and belonging to at least one distributed application.
- One of the objectives of this invention is consequently to propose a procedure which provides the programmer of an embedded platform-based application, with software tools allowing reutilisation of memory space occupied by all or part of certain structured software objects used by an application in a data processing station, whether portable or not.
- One of the objectives of this invention is consequently to propose a procedure providing the programmer of an embedded platform-based application with software tools for duplication of a structured software object, referred to as source object, to another object, referred to as result object, containing the same values as the source object but constituting a different object in storage.
- source object a structured software object
- result object containing the same values as the source object but constituting a different object in storage.
- One of the objectives of this invention is therefore to propose a procedure providing the programmer of an embedded platform-based application with software tools for erasing or uniformising information contained in the memory space used by a software object of this type, on deletion of said object or reutilisation of said space.
- the invention consequently proposes a procedure as described above, characterised in that the data read, data write, deserialisation and serialisation procedures are applied via their implementation in at last one class stored in the host or embedded platform, said implementation involving at least one of the following commands:
- an object write command executing transmission of a structured object to at least one agent of the embedded platform, by utilisation of the serialisation procedure for this object, followed by the data write procedure and the deserialisation procedure;
- an object read command executing read of a structured object from at least one agent of the embedded platform, by utilisation of the serialisation procedure, followed by the data read procedure and the deserialisation procedure;
- - a deallocation command for a structured object stored in the embedded platform by utilisation of the serialisation procedure, the latter also including a step for storage of freeing or deallocation of the memory space allocated to each component of said object, following analysis of the structure of said component; - a housekeeping or erase command for a memory space freed by a structured object, by utilisation of the deserialisation procedure to create an object with non-material content from a given linear data sequence; - a duplication command for a structured source object by utilisation of the serialisation procedure, without deallocation of said source object, to create a linear data sequence representing this object, followed by utilisation of the deserialisation procedure from this linear data sequence, to create another structured object the content of which is identical to that of the source object.
- the programming language for the embedded platform comprises a first class (IOApplet) describing an ProcessAPDU abstract method imtiating a process which can be user-defined in the apphcation on reception of an APDU message; the program code executing the deserialisation operations in the embedded platform being stored in the embedded platform, for implementation of this ProcessAPDU abstract method, in a second class (ObjecuO Applet) inheriting from the first class (IOApplet), said program code using a ProcessObject method, the latter being described as an abstract method in this same implementation class (ObjectlOApplet).
- IOApplet describing an ProcessAPDU abstract method imtiating a process which can be user-defined in the apphcation on reception of an APDU message
- the program code executing the deserialisation operations in the embedded platform being stored in the embedded platform, for implementation of this ProcessAPDU abstract method, in a second class (ObjecuO Applet) inheriting from the first class (IOApplet), said program code using a ProcessObject method, the latter being described
- the programming language for the embedded platform includes a first class (IOApplet), describing a SendAPDU method transmitting an APDU format message to the host; the program code executing serialisation operations in the embedded platform being stored, for implementation of at least one SendObject method using the SendAPDU method, in a second card class (ObjectlOApplet) inheriting from the first class (IOApplet).
- IOApplet first class
- ObjectlOApplet second card class inheriting from the first class
- a computer system comprising a computer station, referred to as embedded platform, comprising a portable object incorporating at least a processor, storage facilities and communication facilities capable of exchanging inforrnation with a terminal in the form of one or more linear data sequences, characterised in that the platform incorporates a serialisation agent capable of executing a conversion step for a data set in one direction or the other, between a linear data sequence arrangement on the one hand, and a structured arrangement describing or representing one or more software objects, structured or hierarchised in accordance with the criteria of an object-oriented programming language, on the other.
- embedded platform comprising a portable object incorporating at least a processor, storage facilities and communication facilities capable of exchanging inforrnation with a terminal in the form of one or more linear data sequences, characterised in that the platform incorporates a serialisation agent capable of executing a conversion step for a data set in one direction or the other, between a linear data sequence arrangement on the one hand, and a structured arrangement describing or representing one or more software objects, structured
- the embedded platform includes a comrnunication agent capable of:
- this data set into at least one software object, structured or hierarchised in accordance with the criteria of an object-oriented prograrmxring language; and - transmitting this structured software object to the addressee agent, and initiating processing by the addressee agent according to this object.
- the linear data sequence representing a structured software object is stored in the embedded platform in an input or output stream, said embedded platform incorporating a software agent, referred to as serialisation agent, capable of creating the structured object or objects represented by the input flow in the embedded platform, namely deserialising said structured objects, or writing data representing the structured object or objects to be transmitted to the output stream, namely serialising said structured objects.
- serialisation agent a software agent capable of creating the structured object or objects represented by the input flow in the embedded platform, namely deserialising said structured objects, or writing data representing the structured object or objects to be transmitted to the output stream, namely serialising said structured objects.
- the input or output stream is stored in the form of one or more circular memory structures.
- the serialisation agent uses a memory stack, referred to as type stack, to store the type of at least one object making up all or part of the structure of a structured object to be serialised or deserialised, said type stack having a number of memory locations which can only be accessed after the memory locations loaded most recently have been read and erased.
- the data contained in the input or output stream represents one or more structured objects, using a coding system comprising a set of tags, each of said tags representing a given action to be executed on deserialisation of the linear data sequence.
- At least one tag is defined as representing one of the following actions:
- source object referencing an element or object, referred to as source object, as the source of the value of all or part of an element making up the structured object;
- the embedded platform comprises a portable object operating in accordance with standard ISO 7816 and using APDU format commands.
- At least one agent or application stored in the embedded platform is programmed in Java® language, said embedded platform having a computer environment in accordance with the JavaCard® standard.
- the system incorporates, in the host, embedded platform or both, at least one software class implementing at least one of the following commands:
- an object write command executing transmission of a structured object to at least one agent of the card, by serialisation of this structured object into a data stream in the host, followed by transmission of this data stream to the embedded platform, and deserialisation of said data stream into a structured object in the embedded platform;
- an object read command executing read of a structured object from at least one agent of the card, by serialisation of this structured object into a data stream in the embedded platform, followed by reception of this data stream from the embedded platform and deserialisation of said data stream into a structured object in the host;
- a command for duplication in the embedded platform of a structured object, referred to as source object by serialisation to a linear data sequence representing the same object, without deallocation of said source object, followed by deserialisation from this linear data sequence into another structured object the content of which is identical to that of the source object.
- the embedded platform communicates at least with a host belonging to a computer network corn ⁇ iunicating by asynchronous messages in accordance with an AAA-MOM type software infrastructure, said host incorporating a software agent, referred to as card engine proxy agent, capable of managing comrnunications between said embedded platform and other agents of said network, said agents operating in accordance with the specifications of this software infrastructure, and belonging to at least one distributed application.
- a software agent referred to as card engine proxy agent
- Figure 1 is a partial diagram showing object transfer and conversion for read and write operations of a host or terminal to and from a software agent in an embedded platform, in a version of the invention where the card incorporates one application only;
- Figure 2 is a more detailed diagram of object transfer and conversion for read and write operations of a host or terminal to and from a software agent in an embedded platform, in a version of the invention where the card has one application only;
- - Figure 3 is a partial diagram showing object transfer and conversion for read and write operations of a host or terminal to and from a software agent in an embedded platform, in a version of the invention where the card incorporates a number of applications;
- Figure 4 is a partial diagram showing the objects and agents involved in deserialisation of a structured software object from a data stream
- Figure 5 is a partial diagram showing the objects and agents involved in serialisation of a structured software object to a data stream.
- platform refers to a data processing device incorporating at least a processor and storage facilities.
- embedded platform is used to designate a portable object incoiporating a platform of this type, said object being genuinely portable or of small size, or possessing very limited processing or storage capabilities.
- the procedure according to the invention is illustrated, in the following description, principally in the case of an embedded platform comprising a smart card using a JavaCard® type system environment, communicating with a terminal comprising a data processing station executing an application programmed in Java® language. It is however obvious that the procedure according to the invention can be applied to other environments, the data transmission functions of which do not provide for transmission of structured software objects in a mode which is transparent for the programmer. Smart cards to standard ISO 7816, using another prograrnn ing environment, for example "Windows for Smart Cards® ", or which can be programmed using another programming language, for example Visual Basic®, can also be concerned. This also applies to smart cards complying with another standard involving similar limits in regard to their communication functions, or portable objects or terminals using a platform of this type.
- the procedure can also be applied to any portable objects incorporating an embedded data processing station, whether portable or not, such as an electronic automobile component, identification marker, cellular telephone or portable acquisition terminal, for example.
- the procedure according to the invention will be illustrated principally as involving the utilisation of an embedded platform cornn unicating with a data processing station, referred to as terminal or host.
- This procedure can naturally also be used in a case where the terminal is a station forming part of any type of computer network, without deviating from the basic purport of the invention.
- the various functions presented as being executed by this terminal can also be distributed between a number of different devices, and this distribution can vary in time.
- the procedure described can also be described in a case where the embedded platform communicates directly or indirectly with one or more other embedded platforms, again without deviating from the basic purport of the invention.
- the host or host terminal will consequently be defined as the application or station communicating with the embedded platform.
- the procedure according to the invention can be applied, in particular, to communication between a smart card, for example to the JavaCard® standard, and a computer network, for example programmed in Java®, commumcating by means of asynchronous messages in accordance with an AAA-MOM type software infrastructure.
- cominunications between the card and the remainder of the network are typically managed by a software agent, referred to as card agent proxy agent, serving as an intermediary for each of the software agents, referred to as card agents, stored in the card.
- card agents are managed or coordinated or both, by a software agent referred to as card engine agent.
- the procedure according to the invention then enables this card engine agent to communicate with the card engine proxy agent, exchanging structured software objects in accordance with Java language or AAA infrastructure standards.
- the fact of being able to exchange structured objects with the exterior thus enables the card to achieve enhanced compatibility with the AAA infrastructure, and to be seen by the other AAA agents of the network as an AAA type agent itself.
- the procedure according to the invention can also be applied to communication between a smart card, for example to JavaCard® standard, and a computer network, for example programmed in Java®, cormnunicating by means of an object-oriented RPC (Remote Procedure Call) protocol, for example with a Java RMI (Remote Method Invocation) or CORBA® type software infrastructure.
- object-oriented RPC Remote Procedure Call
- Java RMI Remote Method Invocation
- transfer often takes the form of a master/ slave type communication.
- the terminal takes the initiative for executing a transmission function to the embedded platform.
- this function sends a communication command to the platform accompanied by transmission parameters.
- This command can then initiate one or more processing operations in the platform, and receive return or response parameters from the platform.
- APDU Application Protocol Data Unit
- CLA one byte designating the addressee class or application.
- INS one byte designating an instruction to be executed.
- Pi, P2 two bytes providing information concerning the APDU command.
- Lc length of data transmitted.
- Le length of return data awaited.
- SWl, SW2 two bytes constituting check messages or codes sent by the card.
- this APDU format does not provide for transmission or reception of data in any other form than a linear data sequence, namely a simple byte string.
- the programmer wishing to transfer more fully structured objects consequently has no simple software tools for the purpose.
- the programmer is then obliged to make provision in the application for conversion of structured objects of this type into a byte string, then using the APDU command to transmit the string and finally reconverting said objects in the opposite direction.
- JavaCard® In the case of a programmer using Java® language for development of an application using JavaCard® standard embedded platforms, the tools available in JavaCard® provide for linear data transmission in APDU format using the following JavaCard® commands: - "process(APDU)”: the card receives data in APDU format, and initiates processing of the transmission parameters which they contain, by the addressee software agent or "applet” designated in these data; - “sendAPDUO” or “APDU.sendbytesO”: before or during the process previously initiated, the card returns other data in APDU format and containing return parameters to the host.
- process(APDU) the card receives data in APDU format, and initiates processing of the transmission parameters which they contain, by the addressee software agent or "applet” designated in these data
- - "sendAPDUO” or "APDU.sendbytesO” before or during the process previously initiated, the card returns other data in APDU format and containing return parameters to the host.
- the "sendAPDUO" command is implemented in the JavaCard environment in the "IOApplet” class, in the form of a method applicable to a non- typed object containing raw data.
- the "Process(APDU)" command on the other hand is declared in the "IOApplet” class in the JavaCard environment, in the form of an abstract method. This means that the method exists in the Javacard environment, but also that the code implementing the method must be written by the programmer of an application for which it is desired to use this command. For example, the programmer creates an inheriting sub-class of the "IOApplet” class in the application, this sub-class then containing a method receiving the code of the process to be executed by this "Process(APDU)” method.
- the JavaCard environment merely calls the "Process (APDU)” method when a message is received, and then initiates the process which the programmer has included in the additional code.
- the procedure according to the invention provides similar commands, but which accept structured software objects directly, in accordance with the specific object-oriented characteristics of the Java® language. These commands can then be used in the JavaCard® environment, and can be of the "process (Object)” and "sendObjectO” type, for example.
- the procedure according to the invention takes over serialisation, transmission and deserialisation operations for objects and data between the application or sender agent and the addressee agent.
- these operations can be performed by executing a program code contained in the "Process(APDU)" method belonging to a sub-class of the "IOApplet” class, named “ObjectlOApplet”, for example.
- This code is then initiated automatically by the environment when an APDU message is received, and itself contains the conversion operations and the call to another "Process(Object)" abstract method.
- the programmer merely has to write the code for the operations to be executed by the card when a structured object is received. The programmer then writes this code in an inheriting sub-class of the "ObjectlOApplet” class, for implementation of the "Process(Object)” abstract method.
- a host terminal (1) communicates with an embedded platform, for example a
- Host (1) executes at least one application (11) comprising at least one software agent (111), and communicates with card (2) by means of an APDU format communication function (101), involving communication resources including a connection location (100), for example.
- This connection location incorporates a means of connection, for example by electrical contact, microwave link, IR link or magnetic track, or a combination of two or more of these types.
- Card (2) executes an application (22) including at least one software agent (221), and communicates with the host (1) using a response function (201) forming part of the JavaCard® system environment.
- said response function (201) uses comrnunication resources (200) of a type compatible with the communication resources (100) of host terminal (1).
- agent (111) of host application (11) wishes to send data to card agent (221), order it to execute a process (2210) or request information located in card storage, it executes an object write instruction initiating the procedure for sending structured software object (31) to the card, this instruction being designated "WriteObjectO", for example.
- Said software object (31) is then serialised, namely converted to an APDU format data set by a host conversion agent (12).
- This host conversion agent uses the cornrnunication function (101) to transmit these data to the card (2) via the host connection location (100) and the card corrrmumcation resources (200).
- this response function When received in the card by the response function (201) which manages the communication resources (200), this response function transmits said data to a card conversion agent (21).
- Said card conversion agent (21) deserialises the data, converting them in the opposite direction to reobtain their original structure, in the form of a software object (34).
- Said structured software object (34) is then transmitted to the addressee agent (22), using an object processing instruction which will execute the process (2210) corresponding to the data received, this instruction being designated "Process(Object)", for example.
- the agent (221) of application (22) in card (2) wishes to send data to the agent (i l l) of host (1), or inforrnation concerning a process executed, it executes an object transmission instruction which initiates the procedure for transmission of a structured software object (41) to the host, this instruction being designated "SendObjectO", for example.
- Said software object (41) is then serialised, namely converted to an APDU format data set, for example by the card conversion agent (21).
- This card conversion agent uses the response function (201) to send these data to the card (2) via the card communication resources (200) and the host connection location (100).
- the host cornrnunication function (101) which manages the connection location (100)
- said communication function transmits the data to the host conversion agent (12).
- Said host conversion agent (12) deserialises the data, converting them in the reverse direction to reobtarn their original structure in the form of a software object (44).
- Said structured software object (44) is then transmitted to the addressee agent (11) by an object read instruction which reads the data received, this instruction being designated "ReadObjectO", for example.
- Figure 2 represents a version of the invention where serialisation/ deserialisation and transmission operations executed by the host and card conversion agents (12 and 21 respectively), are executed by two different agents (121, 122 and 211, 212 respectively).
- the card conversion agent (21) thus comprises a communication agent (211) and a serialisation agent (212).
- the cornrnunication agent (211) manages the byte conversion operations, exchanging data in the form of transmission parameters (32) and response parameters (43) with the response function (201).
- said communication agent (211) verifies that the data received are complete, and concatenates transmission parameters (32) in a linear data sequence stored in an input stream (33).
- said communication agent (211) reads a linear data sequence in an output flow (42), and separates these data for distribution as response parameters (43) compatible with the transmission capabilities of the response function (201).
- the serialisation agent (212) manages the object level conversion operations, performing serialisation/ deserialisation proper.
- the serialisation agent (212) analyses the structure and content of a structured software object (41) to be transmitted, and codes this object in the form of a linear data sequence stored in the output stream (42).
- the serialisation agent (212) reads a linear data sequence in the input stream (33). It then analyses the data in this stream, and reconstitutes the structured software object (34) which they represent.
- Figure 3 represents a version of the invention where the card can have a number of agents (221, 222, 223, 231) which can have addressee status for the procedure according to the invention, these agents being possibly distributed between one or more applications (22, 23).
- the procedure according to the invention includes an interface agent (210), via which all structured data exchanges between the card (2) and the host (1) transit.
- the interface agent (210) receives all data transmitted to the card, in place of the application (22) or addressee agent (221), irrespective of said addressee.
- Said interface agent (210) then directs concatenation of transmission parameters (32) by the communication agent (211), and subsequent deserialisation of resultant data (33) by the serialisation agent (212), as described above.
- the same interface agent (210) transmits said structured object (34) to the software agent (221) which was the addressee for data (32) on their reception.
- the data (32) received by the interface agent (210) contain identification information for the addressee agent (221), or the interface agent (210) adds corresponding information to said data (32) before these are transmitted.
- the structured object (34) resulting from deserialisation is then addressed directly by the deserialisation agent (212) or a distribution agent (not shown).
- the interface agent (210) receives all data (41) transmitted to the host by a sender application (22) or a sender agent (221). Said interface agent (210) then directs serialisation of these data, by the serialisation agent (212), into an output stream (42), and concatenation of said output stream (42) by the communication agent (211), as described above. The data obtained are then sent by the response function (201) to the terminal (1) via the communication resources (200, 100) in the form of response parameters (43).
- the interface agent (210) is inserted in the transmission and conversion chain (201, 211, 212, 221).
- the interface agent (210) directs the data or objects received to their addressee (221, 222, 223, 231) in the card, according to information included in the data received.
- the interface agent (210) can also be included to receive data or objects to be transmitted, assigning inforrnation to said data or objects representing their sender (221, 222, 223, 231).
- the data organised in structured software objects to be transmitted are converted into a linear data stream, and vice versa.
- This serialisation step manages the structure of the object, and is executed by the serialisation agent in each platform.
- the data arranged in simple linear streams are transmitted by fragment using the transmission function, for example in APDU format, this being the only means of exchanging inforrnation between the card and the outside world.
- These exchanges are managed by the host and card cornrnunication agents, which communicate with each other by sending parameters using this transmission function.
- the various processes are implemented in one or more classes, and generally with at least one operating in the card and one in the terminal or host.
- the procedure according to the invention can so provide an "ObjectlOApplet” class for the card and an "ObjectlOProxy” class for the host, using the following syntax: class ObjectlOProxy ⁇ void writeObject (Object o); Object readObject (); ⁇ with the "ObjectlOProxy” class defining a class in the host, providing the user application with "writeObject (Object)” and "readObject ()” commands: class ObjectlOApplet ⁇ void process (Object o); void sendObject (Object o);
- the "process(Object)” and “sendObjectO” commands do not therefore trigger the corresponding conversion operations directly.
- the "sendObjectO” command stores the object to be transmitted in an output queue, for example "qout”, where the objects to be serialised for transmission are introduced by an introduction command of the "qout.push(object)” type.
- these objects to be transmitted are extracted from the output queue in the same order as they were introduced.
- the command extracts an object serialised by a previous operation initiated by the host, from an input queue, for example "qrn". Said extraction is obtained by an extraction command of the "qin.popO" type.
- the read, write, serialisation and deserialisation operations are then managed from the host by the "ObjectlOProxy” class, using user-transparent commands.
- These commands can be implemented in the code of this class, in the following form for example: - "card. Serialize out”: initiates serialisation in the card of the object to be transmitted, as described below.
- These objects can have been stored in an output queue on execution of a "sendObjectO" instruction by the card application;
- card.Read initiates output stream data read in the card, and transmission of these data to the host, as described below;
- the card output and input streams are stored in the same circular memory structure.
- Other versions of the invention are naturally possible, using a different memory structure for each stream or using other types of memory structure.
- a circular memory structure corresponds in this case to a set of successive memory locations, the first location being considered by the system as following immediately after the last location. This means that a linear data sequence can be stored in a structure of this type starting at any location, without loss of continuity, provided the length of said sequence is not greater than the total number of locations.
- the fact that the input and output streams share the same circular structure involves storing the data which they contain in different areas of this same circular structure.
- the data contained in these streams being erased as they are read, immediately or during an operation, the length and position of the two streams vary inside this circular structure.
- one of the two streams has no more space to store new data as it is blocked by non-erased data of the other stream, it is merely necessary to process the other stream to free the space which it occupies.
- a circular structure of this type makes it possible to use limited storage resources for processing streams the length of which is not determined in advance. It is merely necessary for the different operations on the two streams to be interspersed sufficiently evenly for this purpose.
- the host If the host wishes to obtain data located in the card output stream, it sends a read command, for example "card.Read” for Java® syntax. This command initiates a read session, typically divided into a number of transactions, each transaction representing one iteration of the process.
- a read command for example "card.Read” for Java® syntax. This command initiates a read session, typically divided into a number of transactions, each transaction representing one iteration of the process.
- the host issues an APDU format command, accompanied by transmission parameters (PI and P2, corresponding to a short integer) representing the length of the data which it wishes to receive, via its communication agent and transmission function.
- transmission parameters PI and P2, corresponding to a short integer
- the card On receipt of this command from the communication agent, the card reads a first data block in the card output stream, and transmits this block to the card response function. This first data block is then returned to the host as response data (DataR) in the response to the APDU command.
- DataR response data
- Each successive iteration of the read process then involves transmission of an APDU command by the host, accompanied by transmission parameters (PI and P2, namely a short integer) representing the length of the data already received. Once received by the card corrrrnunication agent, this length serves as an acknowledgement for previous transmissions.
- the corrrrnunication agent returns the output stream data immediately following the length indicated by the host, as response data (DataR). It should be noted that data are read from the output stream but are not erased, and can consequently be retransmitted in case of need. This means that no data can be forgotten in this transmission.
- the read session terminates when the length requested by the host has been received correctly, and the host stops the iterations.
- the session can also be terminated, or interrupted, if the card cornrnunication agent sends a data item (for example, a DataR field with zero length) or a code (SWl or SW2) signifying that all available data in the output stream has already been sent. If the card output stream is empty, the host must then initiate a new object serialisation operation from the card "qout" queue to the card output stream, in the card, for the output stream to receive fresh data.
- a data item for example, a DataR field with zero length
- SWl or SW2 a code
- This command initiates a write session, typically divided into a number of transactions, with each transaction representing one process iteration.
- the host sends an APDU format command, accompanied by transmission parameters (PI and P2, namely a short integer) representing the length of the data it wishes to transmit, via its cornrnunication agent and transmission function.
- the data field (DataT) of this first APDU command then contains the first data block or group to be transmitted, this data block being read in the host output stream.
- the card response function transmits said first data block to the card communication agent.
- the card communication agent then writes this first data block to the card input stream.
- Each successive iteration of the write process involves transmission of an APDU command by the host, accompanied by transmission parameters (PI and P2, namely a short integer) representing the length of the data already transmitted.
- the data field (DataT) of this first APDU command then contains the next data block or group read from the host output stream.
- the card response function On receipt of this command, the card response function transmits these parameters and this data block to the card communication agent.
- the card cornrnunication agent then compares the data length announced in the transmission parameters (PI and P2) with the length of the data already received since the beginning of the write session. This means that no data can be forgotten in this transmission.
- the card cornrnunication agent If this comparison identifies no errors, the card cornrnunication agent writes this data block to the card input stream. If an error is detected, the communication agent returns a code or index to the host, indicating an error and/or representing the nature of this error. This code or index can be returned via the response parameters (SWl and SW2) of the response function, the returned data field (DataR), the length of this field or a combination of these elements.
- the write session terminates when the length announced by the host has been transmitted, and the host stops the iterations.
- the session can also be terminated, or interrupted, if the card communication agent sends a code or index indicating that the card input stream cannot receive any fresh data.
- the host must then initiate one or more operations in the card for freeing space in the memory structure containing this input stream.
- serialisation and deserialisation operations are executed between the data streams and agents or applications of the card, and vice versa, as follows.
- Objects are deserialised in the card from input flow (33) to the
- the host uses an instruction when it wishes to initiate a deserialisation operation in the card, for example "card.Serialize In” for Java® syntax.
- Figure 4 illustrates deserialisation of a structured software object (34) by decoding the data of input stream (32) corresponding to said object (34), and storage and structure component creation operations for said structured object (34), or result object.
- the serialisation agent (212) interprets these data according to a given code, and creates a structured software object (34) based on this interpretation.
- Certain data in the data sequence stored in this input stream can have a given value, and this value is interpreted as indicating the presence of a code tag.
- This decoding can be performed by calling an allocation method particular to each type of structured object to be decoded, for example using the following syntax:
- Typeobject decode (Object, InputStream) to decode an object "Object” of type "Typeobject", from the input stream "Input Stream”.
- This code comprises a set of tags each having a given significance, and each corresponding to at least one specific value of a data item in the input stream.
- each data item in the input stream having a value corresponding to one of these tags is interpreted by the serialisation agent during the deserialisation process.
- the serialisation agent (212) can be designed to recognise a number of tag sets, or each tag can be represented by a number of different data values, without deviating from the basic purport of the invention. Diversity of this type can be used, in particular, for accounting for one card (2) or card type, with a number of different terminals or host environments.
- the code comprises tags of the "NULL”, "NEW”, "REF” and "DATA" type.
- NULL tag represents an absence of data, while occupying a location in the structure in course of construction by the serialisation agent.
- a NEW tag indicates the beginning of the description of a new object to the serialisation agent, this object being structured software object (34) resulting from the conversion, or an object, referred to as element, comprising part of a structured object (34) of this type.
- a REF tag indicates the designation of an object, the same or another object, as value source for all or part of the object or element in course of description. This is used to assign a value by reference.
- a DATA tag indicates that the following data represent the value or content of the object or element in course of description.
- This content can comprise raw data representing one or more values to be assigned to the object directly, or include other tags again indicating objects or references defining this content.
- a tag can be followed by one or more data items, interpretation of which is determined by the meaning of the tag concerned.
- the serialisation agent knows that it must interpret the following data item as representing the type of the new object described.
- the serialisation agent knows that it must interpret the following data item as representing an identifier for the object designated as source of this value by reference.
- the tags are coded on one byte in the same way as type and reference identifiers but it is obvious that the procedure according to the invention also provides for the utilisation of other codes, which are different or more complex or explicit according to the needs and possibilities of the computer environment concerned.
- the serialisation agent (212) analyses the value of each data item, and creates and loads objects or elements (340, 341, 342, 343, 344) making up the result object (34).
- This read of input stream (32) is repeated until reconstruction of the object (34) represented by this input stream has been completed.
- This creation can be obtained by calling an allocation method particular to each object type, for example using the following syntax:
- Typeobject :mallocO for creation or allocation of a "Typeobject” type object on deserialisation.
- a management agent (TMO, TM1, TM2) of a type specific to the type of object to be created, for example a "type marshaller” agent in Java® language.
- This type management agent is specific to one or more object types, and can be managed by a generic type manager agent (TMG), for example a "type manager” agent in Java® language.
- TMG generic type manager agent
- this type manager agent stores the identifiers for the various object types created during the deserialisation process.
- This generic type manager agent (TMG) also includes the codes and procedures, or methods, specific to these different object types and used for serialisation/ deserialisation of the same objects.
- the type manager agent is also used to manage the list of objects and their allocations, making it possible to execute new allocations and reuse a free allocation to create a new object on decoding.
- the type manager agent includes inforrnation on all the different types of object which can be managed in the card.
- This inforrnation can be generated by a host, for example during a card programming phase.
- the inforrnation is then transmitted with classes ("applets") used by the applications, in the form of a program code ("glue code") which is added to the code of the generic type manager agent (TMG).
- applets classes
- glue code program code
- the procedure according to the invention makes it possible to manage the serialisation and deserialisation of structured objects of basic or constructed type, in an embedded platform the programming environment of which, such as JavaCard for example, does not include such a type manager.
- Creation of an object or element during decoding corresponds to allocation of this object, namely reservation of given memory space, and allocation of this space to the object.
- the procedure according to the invention can provide for the possibility of executing this creation with allocation of memory space to this object which had previously been occupied by another object which had become superfluous, for example of the same type as the object to be created. It is consequently possible to reuse card memory space from time to time, this frequently being a valuable asset due to card memory space limitations.
- the input stream (32) corresponds to a structured result object (34), the structure, or graph of which can be described in Java® language in the following form:
- the serialisation agent On reading the input stream (33), the serialisation agent reads a NEW tag (321) first. It therefore reads the following data item (322), and then stores the creation request for a type 2 object. In accordance with this NEW identifier 2 tag (321), the serialisation agent creates new object "x" (340), of class X in the example, using the type manager agent (TM2) corresponding to the same type (Type2). At the commencement of description of a result object, this new object will be the "root" object of the tree structure of the graph for this result object.
- TM2 type manager agent
- the serialisation agent assigns an index (3402) to the newly created object (340), this index taking a value of 0 in the example.
- Said index (3402) can thus serve as a reference for other elements or parts of elements on construction of this result object (34), making it possible to determine whether the content of this element has been loaded or not.
- the serialisation agent then stores the type and index of this object in a memory structure, referred to as type stack (TYST).
- type stack is a memory stack type structure, which means that data items can be stored (pushed) one on top of the other, and a given data item can only be read and extracted (popped) when the data stored subsequently have already been extracted. Data are extracted from the stack in the reverse order to that in which they were stored (LIFO for Last In First Out).
- the serialisation agent also stores the type of said new object
- the next tag is a DATA tag followed by two raw data items (324, 325), which are not tags or identifiers. These two data items are therefore stored in the current object (OBJ), namely x (340) as the value of the following elements (342, 343). These two following elements are integer type (int) designated “i”, and byte type (byte) designated “by” respectively, these elements taking the values contained in these two data items (324, 325) of the input stream respectively.
- OBJ current object
- the serialisation agent will therefore assign an index (3442), 1 in the example, to said object (344), and add (push) the index and type, namely 0, for said new object (344) to the type stack (TYST).
- the serialisation agent will also have a type 0 object, "y" (344) of type Y in the example, created by type manager agent (TMO) corresponding to type 0. Via the type manager agent (TM2) corresponding to the current object (OBJ), the serialisation agent knows that said current object (OBJ), namely "x", is not fully loaded.
- next tag a DATA tag followed by a raw data item (329)
- a DATA tag followed by a raw data item (329) will consequently be assigned as value for the next element (341) of the current object, namely as the value of Boolean type element "bo", this being the last element of object "x”.
- the serialisation agent Via the type manager agent (TM2) corresponding to the current object (OBJ), the serialisation agent knows that said current object (OBJ), namely "x" (340), is now fully loaded.
- the index (3402) of said loaded object (340) is then stored in the object stack (OBJST), with the identifier of this object (340) in the card.
- the serialisation agent then teiminates loading of the current object, and extracts (pops) the type and index stored at the top of the type stack (TYST).
- the top of the stack must naturally be understood as the stack location accessible first.
- the type and index extracted from the type stack, 0 and 1 respectively in the example are then stored as corresponding to a new current object (OBJ).
- the next tag is a DATA tag, which therefore indicates the loading of the current object, namely "y".
- This tag is followed by a REF tag (3211) and a data item (3312), 0 in the example.
- the serialisation agent therefore assigns a value by reference to object "y” (344), representing a simple link with the value of the object for which the index (3402) is designated by this reference (3212).
- Object "y” will therefore have a value defined as referencing object "x”, which has index 0 in the deserialisation process.
- This link can then be defined in the result object (34) by storing the identifier for this object "x" in the card, this identifier being read from the object stack (OBJST) by means of this index.
- the serialisation agent Via type manager agent (TMO) corresponding to the current object (OBJ), the serialisation agent knows that said current object (OBJ), namely "y", is now fully loaded.
- the index (3442) of said loaded object (344) is therefore stored in the object stack (OBJST), with the identifier for said object (344) in the card.
- the serialisation agent then terminates this loading and interrogates the type stack (TYST).
- the serialisation agent concludes that the result object (34) has been created in full.
- the creation or allocation of a new object can be performed at any stage of the deserialisation process, from read of the NEW tag indicating said new object, up to commencement of loading of this object.
- the index used on deserialisation of an object is identical to the identifier of the object in the card.
- Objects are serialised in the card from output stream (42) to output queue "qout", which can be accessed directly by the instruction " SendObjectO” supplied by the "ObjectlOApplet” class and used by the addressee agent or application.
- the host uses an instruction, for example "card.Serialize Out” for Java® syntax, to initiate a serialisation operation in the card.
- an instruction for example "card.Serialize Out” for Java® syntax
- Figure 5 illustrates the serialisation of a structured software object (41), referred to as source object, by analysis of the components of the structure of said structured object (41), followed by coding in the form of data stored in the output stream (42) corresponding to said source object (41).
- This serialisation function is implemented in a method, namely an action or procedure available for an object of a given type, using the following Java® syntax:
- Typeobject (Object, OutputStream) being a method used to code an object "Object” of type "Typeobject” to the output stream "OutputStream”.
- Typeobject being a method used to obtain information concerning the type and constructed types of an object, on coding a "Typeobject” type object.
- the basic types are generally those types scheduled and managed by the environment or prograrnming language, in contrast to constructed types, defined as a combination of a number of objects.
- Current basic types are "integer”, “Boolean” and “byte” for example for an embedded environment, and long integer, real, long real and character types ("long”, “real”, “double” and “char”) for more comprehensive environments.
- the serialisation agent (212) executes a recursive scan on the complete structure, or graph, of the source object (42) to be serialised, analysing the object elements (410, 412, 413, 414, 411), starting with the "root" object or element, "x" in the example.
- the graph of the source object (42) presented in the example is the same as described above for Figure 4.
- the serialisation agent calls an agent (TMO, TMl, TM2) corresponding to the same constructed type, for each graph element having a constructed type.
- Description of the source object ( 1) in the output stream (42) commences by writing a NEW tag, followed by the root element type identifier, type 2 object "x" in the example. This root object is then designated as current object (OBJ). This object also receives an index, 0 in the example, and its type and index are then loaded (push operation) in the type stack (TYST).
- OBJ current object
- TYST type stack
- root object "x" contains an object "y" (414) which is a constructed type
- the description of the root objective includes a NEW tag, followed by the type of said object "y", "NEW 0" in the example, in place of the value of said object "y”.
- An index is assigned to the NEW tag, 1 in the example, when this tag is written. The index and type of this new object are then loaded (push operation) in the type stack (TYST).
- the index of this object is stored in the object stack (OBJST) with the identifier of this object.
- the serialisation agent interprets the type stack, extracting ("pop” operation) the type and index of object "y”. It stores said object "y” as new current object (OBJ), and then commences description of the content of said object "y”.
- This object comprising a simple reference to the root object "x”
- the data written to the output stream comprise a REF tag, followed by a data item serving as index for the object to be designated as reference, namely the object "x” with index 0 in the example.
- the various read, write, serialisation and deserialisation operations required by the host application (11) can be interleaved in one or more program loops.
- a loop of this type executes a command for each of these operations on each iteration, for example using the following Java® syntax:
- the first and last lines determine the repetition of a loop comprising the four intervening lines of code.
- a loop of this type can naturally be combined with other operations, and include various conditions for interrupting the iteration process.
- the first line in the loop indicates initiation of a serialisation session to the card output stream, for objects previously stored in the "qout" output queue by a "SendObjectO" command, in the card. This session is then repeated as long as an "ok out” condition is met, for example as long as there are objects to be transmitted in the "qout” queue, and the output stream is not full.
- the second line indicates initiation of a read session for data contained in the card output stream by the host. This session is then repeated as long as a "data read” condition is met, for example as long as data are received from the card.
- the third line indicates execution and repetition of a write session to the data input stream from the host. This session is only executed and repeated if, and as long as a "data in” condition is met, for example as long as there are data to be sent to the card and the card entry stream is not full.
- the fourth line indicates execution and repetition of a deserialisation session for data contained in the card entry stream to the structured object "qin" entry queue, where these data are extracted by a "process (Object)" command.
- This session is only executed and repeated if, and as long as an "ok in” condition is met, for example as long as there are data to be deserialised in the card entry stream.
- the end of an object serialisation operation typically initiates processing of the object, for example by automatic call to the
- the "ObjectlOProxy” class loaded in the processing station or host terminal supplies the "WriteObjectO” and "ReadObjectO” commands.
- the "ObjectlOApplet” class loaded in the embedded platform supplies the "Process(Object)” and “SendObjectO” commands.
- the "ObjectlOApplet” class implements these commands using a known extension technique, namely by inheritance from the "IOApplet” class which contains the "process(APDU)” method. This involves adding the program code combined with the initial method to this method, and modifying or replacing operation of the code as defined in the initial method.
- Instruction "WriteObjectO" is employed by the user in its host application, for transmitting a structured object to the card application and initiating processing in the card.
- the "Process(Object)” method is called automatically by the card following reception and deserialisation of a structured object.
- the content of this method is then programmed by the user in that part of the application loaded in the embedded platform, to execute the desired operations from this object.
- This method is then used in a similar way to the standard "process(APDU)" command in JavaCard® for APDU format data only.
- the "SendObjectO” instruction is employed by the user in that part of the application loaded in the embedded platform, for example inside the “Process(Object)” method code, to prepare transmission of one or more structured objects from the embedded platform to the host.
- This instruction is then used in a similar way to the standard "sendAPDUO" command in JavaCard® for APDU format data only.
- the "ReadObjectO" instruction is employed by the user in its host application, for reception of the structured object or objects which the card application has prepared for this purpose, from the embedded platform.
- the analysis step for each component of a structured software object during serialisation of the object can be performed using various options.
- a number of these options can be included in implementation of the same serialisation command, each execution of this command being accompanied by a parameter indicating which option must be used.
- These various options can also be used separately in different implementations of the serialisation command.
- serialisation agent (212) deallocates the memory space containing this component, or marks said component as being reusable for a new allocation.
- serialisation using this option referred to as destructive serialisation, executes conversion of a structured object after which the memory space occupied by the object is freed.
- the procedure according to the invention can include an option or command which executes this type of destructive serialisation of a structured object stored in the card, outside any transmission operation, for example in implementation of the "ObjectlOApplet" class. It will be clearly understood that the procedure according to the invention enables the user to reuse memory space occupied by all or part of some of the software objects of the application, without difficulty.
- the procedure according to the invention includes an option or command executing deserialisation of a structured object by reusing the memory space in the card previously occupied by a structured object which has since been destroyed, as described above. This deserialisation is executed, outside any transmission operation, from a data stream containing data which is all identical or non-material.
- the memory space reused does not contain any data belonging to the object previously occupying the space concerned.
- this operation is implemented, for example in the "ObjectlOApplet" class, the procedure according to the invention enables the user to program total erase of memory space corresponding to a given allocation without difficulty.
- the procedure according to the invention includes an option or command executing serialisation of a structured source object to a linear data sequence, outside any transmission operation. This same linear data sequence is then deserialised into a result object identical to the source object, but using a different memory space.
- this operation is implemented, for example in the "ObjectlOApplet" class, the procedure according to the invention enables the user to program identical duplication of a structured software object without difficulty.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
Claims
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0202570 | 2002-02-28 | ||
| FR0202570A FR2836568A1 (en) | 2002-02-28 | 2002-02-28 | Data conversion method for smart cards, involves conversion of structured software object from software agent in embedded platform to data set arranged in linear data sequence by serialization agent |
| PCT/IB2003/000763 WO2003073390A2 (en) | 2002-02-28 | 2003-02-26 | Iterative serialisation procedure for structured software objects |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP1481377A2 true EP1481377A2 (en) | 2004-12-01 |
Family
ID=27676188
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP03704871A Withdrawn EP1481377A2 (en) | 2002-02-28 | 2003-02-26 | Iterative serialisation procedure for structured software objects |
Country Status (6)
| Country | Link |
|---|---|
| EP (1) | EP1481377A2 (en) |
| JP (2) | JP2005519376A (en) |
| CN (1) | CN1301462C (en) |
| AU (1) | AU2003207871A1 (en) |
| FR (1) | FR2836568A1 (en) |
| WO (1) | WO2003073390A2 (en) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050234986A1 (en) * | 2004-04-09 | 2005-10-20 | Microsoft Corporation | Systems and methods for fragment-based serialization |
| US8086660B2 (en) | 2004-05-21 | 2011-12-27 | Ixia | Distributed data model |
| JP4852906B2 (en) * | 2005-06-24 | 2012-01-11 | 富士ゼロックス株式会社 | Cooperation processing system and apparatus |
| EP2575036A1 (en) * | 2011-09-30 | 2013-04-03 | Gemalto SA | Method for processing application data and corresponding first device |
| CN109739654B (en) * | 2018-08-10 | 2022-09-09 | 比亚迪股份有限公司 | Message middleware and message transmission method |
| EP3920022A4 (en) * | 2019-01-30 | 2022-10-19 | Nippon Telegraph And Telephone Corporation | INFORMATION PROCESSING DEVICE, METHOD AND PROGRAM |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2677309B2 (en) * | 1989-07-19 | 1997-11-17 | 富士通株式会社 | Area management method in large-scale knowledge database |
| US6496871B1 (en) * | 1998-06-30 | 2002-12-17 | Nec Research Institute, Inc. | Distributed agent software system and method having enhanced process mobility and communication in a computer network |
| US6754886B1 (en) * | 1998-11-30 | 2004-06-22 | International Business Machines Corporation | Method and system for storing java objects in devices having a reduced support of high-level programming concepts |
| US6547150B1 (en) * | 1999-05-11 | 2003-04-15 | Microsoft Corporation | Smart card application development system and method |
| DE19933584A1 (en) * | 1999-07-17 | 2001-01-18 | Ibm | Process for the compact presentation of information packets and their storage or transmission |
| US6477701B1 (en) * | 1999-09-30 | 2002-11-05 | Seiko Epson Corporation | Version-adaptive serialization and deserialization of program objects in an object-oriented environment |
| FR2805059A1 (en) * | 2000-02-10 | 2001-08-17 | Bull Cp8 | METHOD FOR LOADING A SOFTWARE PART IN A CHIP CARD, PARTICULARLY OF THE TYPE SAID "APPLET" |
| JP2001290785A (en) * | 2000-04-04 | 2001-10-19 | Yokogawa Electric Corp | ORB system and agent system construction method |
-
2002
- 2002-02-28 FR FR0202570A patent/FR2836568A1/en active Pending
-
2003
- 2003-02-26 JP JP2003572003A patent/JP2005519376A/en active Pending
- 2003-02-26 EP EP03704871A patent/EP1481377A2/en not_active Withdrawn
- 2003-02-26 WO PCT/IB2003/000763 patent/WO2003073390A2/en not_active Ceased
- 2003-02-26 AU AU2003207871A patent/AU2003207871A1/en not_active Abandoned
- 2003-02-26 CN CNB038072890A patent/CN1301462C/en not_active Expired - Fee Related
-
2009
- 2009-08-05 JP JP2009182071A patent/JP2009289272A/en active Pending
Non-Patent Citations (1)
| Title |
|---|
| See references of WO03073390A3 * |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2003073390A3 (en) | 2003-12-31 |
| WO2003073390A2 (en) | 2003-09-04 |
| FR2836568A1 (en) | 2003-08-29 |
| JP2009289272A (en) | 2009-12-10 |
| WO2003073390A8 (en) | 2005-04-07 |
| CN1643552A (en) | 2005-07-20 |
| CN1301462C (en) | 2007-02-21 |
| AU2003207871A1 (en) | 2003-09-09 |
| JP2005519376A (en) | 2005-06-30 |
| AU2003207871A8 (en) | 2003-09-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CA2267477C (en) | Packaging memory image files | |
| US5864864A (en) | Method and apparatus for providing transparent persistent data support to foreign data types | |
| CN111176791B (en) | A cross-virtual machine calling method based on multi-virtual machine blockchain platform | |
| KR20000052759A (en) | Using a high level programming language with a microcontroller | |
| US20100174717A1 (en) | Interative serialisation procedure for structured software objects | |
| CN113296987B (en) | Interface calling method and device for calling module, computer equipment and storage medium | |
| US20020082847A1 (en) | Automatic client proxy configuration for portable services | |
| JP2009289272A (en) | Iterative serialization procedure for structurized software object | |
| EP3507689B1 (en) | Java card application package used as a library package | |
| EP1179209A1 (en) | Method and apparatus for sharing data files among runtime environment applets in an integrated circuit card | |
| WO2007010380A1 (en) | System and method for support of legacy communications protocols in a smart card | |
| US20010034818A1 (en) | Method for linking program modules reloaded into a main memory of a processor on a smart card | |
| JP2003529149A (en) | Garbage collection | |
| US7228532B1 (en) | Method and apparatus to facilitate code verification and garbage collection in a platform-independent virtual machine | |
| KR100374526B1 (en) | Simplified use of smart cards | |
| US6754796B2 (en) | Frameworks for implementation of java heaps | |
| CN1172237C (en) | Method and apparatus for creating objects and maintaining accessibility in non-persistent storage | |
| Vandewalle et al. | Developing smart card-based applications using Java Card | |
| CN112698912A (en) | Java Card virtual machine operating environment and memory management method | |
| Oestreicher et al. | Object lifetimes in Java card | |
| US7275681B2 (en) | Method and device for processing data for customizing an application of a portable communication device, for example a smart card | |
| US8122456B2 (en) | Microcircuit card comprising means for publishing its computer objects | |
| CN112230941B (en) | Java Card package and application program installation method and tool | |
| EP4418104A1 (en) | A method for performing an operative system update in a secure element and corresponding secure element and apparatus | |
| CN113254173B (en) | Control method, control device, financial equipment and medium for calling hardware by multiple application processes |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20040928 |
|
| AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PT SE SI SK TR |
|
| AX | Request for extension of the european patent |
Extension state: AL LT LV MK RO |
|
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: SCHLUMBERGER MALCO, INC. Owner name: AXALTO SA |
|
| 17Q | First examination report despatched |
Effective date: 20070702 |
|
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: SCHLUMBERGER MALCO, INC. Owner name: GEMALTO SA |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20130903 |