|
Claims  |
|
|
What is claimed is:
1. In a communications system having a plurality of digital computers
coupled to a channel over which computers exchange digital messages, a
method for processing information among said computers comprising the
steps of:
executing on a first computer a travelling program comprising a sequence of
digital program instructions including instructions which determine at
least one next destination that receives the sequence of instructions,
said sequence of instructions defining a plurality of related object
instances which are bound together; and
transmitting to said next destination digital information comprising at
least said plurality of object instances together with accompanying
digital data associated with said sequence of instructions.
2. A method according to claim 1, wherein said travelling program contains
the actual program defining a class associated with at least one of said
plurality of object instances.
3. A method according to claim 1, wherein one of said plurality of object
instances is designated as the instance which receives control when the
travelling program is itself invoked as an object.
4. A method according to claim 1, wherein a program which defines a class
of at least one of the constituent object instances, is included as part
of the travelling program.
5. A method according to claim 4, wherein the included program is
represented in source form.
6. A method according to claim 4, wherein the included program is
represented in compiled form.
7. A method according to claim 1, further including the step of including
an indication of a program defining a class of at least one of the
plurality of object instances.
8. A method according to claim 7, wherein the indication of the program
which defines the class of at least one of the constituent object
instances, includes a reference to a hash of the program.
9. A method according to claim 8, wherein the hash is taken of a version of
the source program.
10. A method according to claim 8, wherein the hash is taken of a compiled
version of the program.
11. In a computer system having at least one computer having a main memory,
a method of operating said computer system comprising the steps of:
loading a digital data structure in memory relating to a predetermined data
type which includes digital data identifying a function which can be
applied to said predetermined data type and identifying at least one
program which controls how to manipulate digital data of said
predetermined data type; and
transmitting at least a portion said digital data structure to a next
destination for processing.
12. A method according to claim 11, wherein said computer system includes a
disk memory, said loading step includes the step of using a file stored on
said disk memory to create a related internal control block data structure
in said main memory.
13. A method according to claim 11, wherein said step of loading further
includes the step of identifying in said data structure variables which
are used by said at least one program.
14. A method according to claim 11, wherein said step of loading further
includes the step of storing an indication of a program responsible for
handling requests relating to said digital data structure.
15. A method according to claim 11, wherein said step of loading further
includes the step of storing indicia identifying programs associated with
said digital data structure.
16. A method according to claim 11, wherein said step of loading further
includes the step of storing an indication of at least one digital
signature associated with said data structure.
17. A method according to claim 11, wherein said at least one program
includes a plurality of distinct instance programs.
18. A method according to claim 11, wherein said step of loading includes
the step of defining a pool of variables which are shared among a
plurality of programs.
19. A method according to claim 11, further including the step of
identifying a program instance as a variable in said data to thereby
permit an entire program to be manipulated through an instance designator.
20. A method according to claim 11, further including the step of digitally
signing at least a portion of the digital data structure to be
transmitted.
21. A method according to claim 20, wherein the digitally signed data
contains at least a hash of at least one digital program.
22. A method according to claim 11, wherein the identifying of at least one
program includes a plurality of program references, such that at least one
program reference is associated with an indication of a hash of the
associated program.
23. A method according to claim 22, wherein said hash is a hash of a
compiled version of the associated program.
24. A method according to claim 22, wherein said hash is a hash of the
source program of said associated program.
25. A method according to claim 11, wherein said step of loading includes
the step of defining at least one program related data structure.
26. A method according to claim 25, wherein said program related data
structure includes a pointer identifying the next program to be invoked by
the program identified in the program related data structure.
27. A method according to claim 25, wherein said program related data
structure includes a program structure data block whose fields are
constant regardless of the hardware platform executing the program.
28. A method according to claim 27, wherein said program structure data
block includes the p-code instructions of the identified program.
29. A method according to claim 11, further including the steps of
constructing at least one additional program characteristic identifying
digital data structure relating to said at least one program.
30. A method according to claim 29, wherein said step of constructing a
program characteristic identifying digital data structure includes the
step of identifying the parent program from which said at least one
program is extended.
31. A method according to claim 29, wherein said step of constructing a
program characteristic identifying data structure further includes the
step of storing indicia identifying authorization information defining
operations which the identified program is authorized to perform.
32. A method according to claim 29, wherein said step of constructing a
program characteristic identifying data structure includes the step of
identifying the functions which may be performed by said at least one
program.
33. A method according to claim 32, wherein the step of identifying the
functions includes the step of identifying the starting address of the
program code which implements an identified function.
34. In a communications system having at least one computer and a memory, a
method of operating said computer comprising the steps of:
loading a digital cell in said memory comprising a digital data structure
that identifies a class definition and a collection of related object
instances which are bound together by said class definition, and
transmitting by said at least one computer at least a portion of said
digital cell and class definition identifying data structure to a next
destination.
35. A method according to claim 34, wherein said class definition
identifying data structure includes a class definition defining program.
36. A method according to claim 34, wherein said digital cell is part of a
digital data structure which includes instructions for transmitting itself
to said next destination.
37. A method according to claim 34, wherein said transmitting step includes
the step of transmitting a portion of said digital cell to another user
via electronic mail.
38. A method according to claim 34, further including the step of
permitting said digital cell to be invoked and processed as an object by
at least one other digital cell.
39. A method according to claim 34, including the step of invoking said
digital cell and processing it as an object by at least one other digital
cell.
40. A method according to claim 34, further including the step of
dynamically determining the class for objects which are processed.
41. A method according to claim 34, further including the step of storing
the program logic defining object classes as part of a stored cell.
42. A method according to claim 34, wherein said digital cell includes a
collection of object instances whose execution can be suspended and stored
as a file.
43. A method according to claim 34, wherein said step of loading includes
the step of storing said digital cell in a file in a mass storage device;
and further including the step of using the stored digital cell to create
at least one internal control block used during program execution by an
operating system program.
44. A method according to claim 34, wherein the identification of a class
definition identifies multiple distinct class definition programs.
45. A method according to claim 34, wherein the identification of a class
definition is accomplished by the step of referencing constituent class
definition programs by hash value.
46. A method according to claim 34, further including the step of
validating at least one class definition with a digital signature.
47. A method according to claim 34, wherein said digital cell is a
travelling object oriented program, and further including the step of
performing validating digital signatures.
48. A method according to claim 34, wherein said digital cell is a
travelling object oriented program, further including the step of
constructing electronic data interchange data structures.
49. A method according to claim 34, further including the step of digitally
signing at least a portion of said digital cell.
50. A method according to claim 49, wherein the step of digitally signing
includes the step of digitally signing at least one class definition
program.
51. A method according to claim 34, further including the step of
dynamically determining associated methods for objects which are
processed.
52. A method according to claim 44, wherein said associated methods are
determined by string values.
53. A method according to claim 34, wherein said related object instances
store indicia for locating an associated class definition program.
54. A method according to claim 53, wherein a related object instance is
bound to the class definition program as it existed at the time the object
instance was created.
55. A method according to claim 53, wherein a related object instance is
associated with specific versions of the class definition program.
56. A method according to claim 34, wherein said digital cell stores
authorization information defining operations which an associated class is
authorized to perform.
57. A method according to claim 56, including the step of digitally signing
the portion of said digital cell associated with defining operations which
an associated class is authorized to perform.
58. A method according to claim 56, wherein the class is determined by
string values.
59. In a communications system having at least one computer and a memory, a
method of operating said computer comprising the steps of:
loading a digital cell in said memory comprising a digital data structure
that identifies at least one class definition and a collection of related
programs which are bound by said class definition, said digital data
structure including instructions for transmitting at least a portion of
itself to a next destination; and
transmitting at least a portion of said digital cell including class
definition identifying data structure to a next destination.
60. A method according to claim 59, wherein the related programs are
identified by their hash values.
61. A method according to claim 59, wherein the related programs are object
oriented programs and further including the step of saving a portion of an
object oriented program so it can be executed at a later time.
62. A method according to claim 59, further including the steps of:
accessing said digital cell;
saving said digital cell in said memory; and
inserting at least one program definition after the cell has been saved.
63. A method according to claim 59, further including the step of digitally
signing at least one of said related programs so that it can perform
sensitive functions.
64. A method according to claim 63, wherein said step of digital signing
includes the step of signing the hash of one of said related programs.
65. A method according to claim 59, further including the step of modifying
one of said related programs.
66. A method according to claim 65, further including the step of checking
to determine if the program modification is compatible with the data of
existing instances of the program to be modified.
67. A method according to claim 65, further including the step of storing a
revision level indication of said class definition and determining whether
the modification is compatible with the revision level.
68. In a communications system wherein a plurality of users of one or more
digital computers exchange digital messages on behalf of said users, a
method for processing information among said computers comprising the
steps of:
associating with a traveling program cell a plurality of object instances,
at least one of said object instances having data contained in the cell,
said traveling program cell comprising a sequence of digital program
instructions including instructions which determine at least one next
destination that receives the sequence of instructions;
associating with each object instance a plurality of program instructions;
computing a cryptographically secure hash value which depends, at least in
part, on at least one of said program instructions;
executing on a first computer a sequence of the instructions associated
with at least one object instance in said traveling program cell, wherein
at least one of the executed instructions modifies digital data associated
with an object instance; and
wherein at least one of the instructions determines at least one next
destination second computer user to receive the modified traveling program
cell after it is transmitted from the first computer user; and
transmitting the modified traveling program cell to said next destination
second computer user including said digital information comprising at
least said plurality of object instances, together with accompanying
digital data with indicia of said program instructions associated with
each object instance, and wherein at least one data item in at least one
of the object instances has been modified by execution in the first
computer of the associated program instructions.
69. A method according to claim 68, wherein said traveling program cell
contains at least some of said instructions associated with at least one
of said plurality of object instances.
70. A method according to claim 68, wherein one of said plurality of object
instances is designated as the instance which receives control when the
traveling program is itself invoked as an object.
71. A method according to claim 68, wherein the said traveling program cell
contains the said computed hash.
72. A method according to claim 68, wherein said hash value is digitally
signed.
73. A method according to claim 68 wherein at least one of the said program
instructions is represented in source form.
74. A method according to claim 68, wherein at least one of the said
program instructions is represented in compiled form.
75. A method according to claim 68, wherein at least one of the said
program instructions is represented in p-code form.
76. A method according to claim 68, wherein multiple hash values are
computed wherein the at least one hash is based on instructions in source
form, and at least one hash is based on the source hash is based on
instructions in compiled form.
77. A method according to claim 68, wherein multiple hash values are
computed wherein the hash values are based on the same source instructions
compiled for different computer architectures.
78. A method according to claim 68, wherein said transmitting step includes
the step of transmitting a portion of said digital cell via electronic
mail.
79. In a communications system, wherein a plurality of users of one or more
digital computers exchange digital messages on behalf of said users, a
method for processing information among said computers comprising the
steps of:
associating with a traveling program cell, a plurality of object instances,
at least one of said object instances having data contained in the cell,
said traveling program cell comprising a sequence of digital program
instructions including instructions which determine at least one next
destination that receives the sequence of instructions;
associating with each object instance a plurality of program instructions;
computing at least one digital signature;
executing on a first computer a sequence of the program instructions
associated with at least one object instance in said traveling program
cell,
wherein at least one of the executed instructions modifies digital data
associated with an object instance; and
wherein at least one of the executed instructions determines at least one
next destination second computer user to receive the modified traveling
program cell after it is transmitted from the first computer user; and
transmitting the modified traveling program cell to said next destination
second computer user including said digital information comprising at
least said plurality of object instances, together with accompanying
digital data with indicia of said program instructions associated with
each object instance, and wherein at least one data item in at least one
of the object instances has been modified by execution in the first
computer of the associated program instructions.
80. A method according to claim 79, wherein the value of the digital
signature depends, at least on part, on at least one of said program
instructions.
81. A method according to claim 79, wherein the digital signature is
transmitted as part of the cell.
82. A method according to claim 79, wherein the digital signature is stored
in a memory device associated with the second user's computer system.
83. A method according to claim 79, wherein the digital signature depends
on a source code version of the indicated instructions.
84. A method according to claim 79, wherein the digital signature depends
on a compiled version of the indicated instructions.
85. A method according to claim 79, wherein the digital signature depends
on a p-code version of the indicated instructions.
86. A method according to claim 79, wherein there is at least one
instruction associated with an object instance which is not executed until
after the digital signature for its program is verified.
87. A method according to claim 79, wherein the digital signature is
verified by at least one computer as being performed by a trusted entity.
88. A method according to claim 79, wherein the digital signature is
verified by at least one user as being performed by a trusted entity.
89. A method according to claim 79, wherein there is at least one digital
signature having a value which depends on authorization information that
defines operations which the associated instructions are authorized to
perform.
90. A method according to claim 79, wherein said transmitting step includes
the step of transmitting a portion of said digital cell via electronic
mail.
91. In a communications system, wherein a plurality of users of one or more
digital computers exchange digital messages on behalf of said users, a
method for processing information among said computers comprising the
steps of:
associating with a traveling program cell, a plurality of object instances,
at least one of said object instances having data contained in the cell,
said traveling program cell comprising a sequence of digital program
instructions including instructions which determine at least one next
destination that receives the sequence of instructions;
associating with each object instance a plurality of program instructions;
executing on a first computer a sequence of the instructions associated
with at least one object instance in said traveling program cell
wherein at least one of the instructions determines at least one next
destination second computer user to receive the modified traveling program
cell after it is transmitted from the first computer user;
transmitting the modified traveling program cell to said next destination
second computer user including said digital information comprising at
least said plurality of object instances, together with accompanying
digital data with indicia of said program instructions associated with
each object instance, and wherein at least one data item in at least one
of the object instances has been modified by execution in the first
computer of the associated program instructions; and
executing on a least one computer at least one of the instructions
associated with at least one object instance in said traveling program
cell which causes a digital signature to be performed which depends, at
least in part, on the value of data that is associated with an object
instance.
92. A method according to claim 91, wherein said performed digital
signature is transmitted with the cell.
93. A method according to claim 91, wherein said performed digital
signature is verified by at least one computer.
94. A method according to claim 91, wherein said performed digital
signature is verified by at least one computer user.
95. A method according to claim 91, wherein said transmitting step includes
the step of transmitting a portion of said digital cell via electronic
mail. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
The invention generally relates to apparatus and a method for operating
digital computers under the control of object-oriented programs. More
particularly, the invention relates to a method and apparatus for
validating unique travelling object-oriented programs using digital
signature methodology.
RELATED APPLICATIONS
This application is related to allowed application Ser. No. 07/863,552
filed on Apr. 6, 1992, entitled, "Method and Apparatus for Creating,
Processing and Using Travelling Programs" (hereinafter "Travelling Program
Application") and to application Ser. No. 07/883,868, now U.S. Pat. No.
5,412,717, entitled "Computer System Method and Apparatus Using Program
Authorization Information (hereinafter "Program Authorization Information
Application").
BACKGROUND AND SUMMARY OF THE INVENTION
The present invention is directed to apparatus and method for operating a
digital computer in accordance with a powerfully enhanced object-oriented
programming methodology.
In object-oriented programming using existing object-oriented languages,
such as, "C," and "Small Talk," programmers are able to define object
"data types" (or "classes") which are data structures each associated with
a program that knows how to process that data type. Object-oriented
programming permits existing programs to be reused and extended without
having to modify the program. This feature of object oriented programming
is known as the "inheritance feature" and is the ability to define new
data type classes derived as "extensions" of other (more fundamental) data
classes.
The extension class only needs to define those functions (known as the
object's "methods") for the new data type which differ from the existing
("base") class. Such methods may be entirely new or may supersede (by
replacing or augmenting) methods defined for the base class. This
simplifies the creation of novel variations of existing data classes,
either by adding new functions or by superseding (modifying) existing
functions.
Some object-oriented methodologies allow "multiple inheritance" whereby
there can be more than one "base" class from which a given class inherits
characteristics. The present invention contemplates the possible use of
multiple inheritance. The lineage of a given class is the aggregate set of
its base class(es) together with the base class' lineage.
Using more conventional "procedural" programming methodologies, different
data types are processed in different manners based upon processing rule
defined for the data type. Object-oriented programming provides a
different processing methodology. Each individual occurrence of a
programmer-defined object data type or class is known as an "instance" of
that class. Once a class is defined, then its data type can be used over
and over again in different programs with no extra programming effort.
The class program definition for each data type defines the functions that
can be applied to instances of that data type. Programs use objects by
invoking one of the objects methods (i.e., the functions that can be
applied to instances of that data type) in conjunction with a particular
instance of that object. The method then processes that particular
instance of data.
Thus, one of the strengths of object-oriented programming methodology is
that the same method name can be implemented differently in different data
type classes. An application program can perform a generic" operation on
data without having to be concerned about exactly how it is implemented.
This facilitates the addition of new varieties (classes) of data types
with minimal changes, if any, to application programs using these types.
The logic to perform these "methods" is built into each data class once. In
this fashion, the way in which programs use such data types is simplified
by allowing different data types to each implement a particular function
in a way appropriate to that data type.
Object-oriented programming thus provides a different methodology for
compartmentalizing programs which is highly useful in many different
complex application areas. In object-oriented programming, data is not
typically treated as an isolated bitstream, but rather, it is bound to a
program which manages the data.
This feature of object-oriented methodologies--the ability to have a
particular function operate differently on a variety of data types--is
known as "polymorphism."
Polymorphism permits a program to operate on data without being concerned
with what that data represents. The polymorphic feature of object-oriented
methodology permits a particular operation to be implemented in different
ways depending upon the data type so that the function will be performed
appropriate to that data type. An example of polymorphism may, for
example, involve a "multiply" operation. For real scalar data types, two
scalars are arithmetically multiplied together. But for matrix data types,
the "multiply" method could be implemented to yield the more involved
"matrix" multiplication. By treating these as objects, program designers
can use multiplication without worrying about whether the particular
operands were real numbers or matrices. Then, at some future time, for
example, a new "complex" number data type with yet a different multiply
mechanism could be introduced into existing programs with no further
programming effort.
Another example of object-oriented methodology may involve objects
associated with a graphical display. Most of such objects would have a
"quick" click method that would be invoked whenever the mouse pointer lies
atop the object's associated graphical image and the user clicks the mouse
switch.
Consider graphical display of a group of buttons. Each "button" graphic may
be represented and controlled by a separate instance of the "button"
class. Other types of graphical items, such as data fields, will be
controlled with instances of their own respective classes. It would be
possible to treat an "icon" as a special class of "button" but one which
has additional or modified characteristics.
In developing the "icon" class as an extension of "button," all of the
method routines for "button" would be effective for the "icon" class,
except those which are specifically supplied for the distinct "icon" class
definition. Whenever the user clicks the mouse switch, the system
determines the items over which the mouse appears to be positioned and
invokes the "click" method for the object instance associated with that
graphical item.
Different functions such as "scroll contents up," "delete this object,"
"print contents," or "handle mouse-button-click request" may be
interpreted differently depending upon the particular graphical object
involved. Allowable functions are defined when the data is defined, not
each time the data is used.
The present invention is directed to significantly enhanced object-oriented
programming methodologies which create a framework for efficiently
performing automated business transactions. The object-oriented
programming methodology of the present invention is particularly useful in
the context of the applicant's "travelling program methodology" described
in the above-identified Travelling Program patent application, which has
been expressly incorporated in its entirety by reference herein.
A travelling program is a digital data structure which includes a sequence
of inst | | |