Data processing: financial – business practice – management – or co – Business processing using cryptography – Usage protection of distributed data files
Reexamination Certificate
1997-07-28
2001-02-13
Trammell, James P. (Department: 2764)
Data processing: financial, business practice, management, or co
Business processing using cryptography
Usage protection of distributed data files
C705S050000, C705S051000, C705S057000, C705S058000, C380S201000, C380S202000
Reexamination Certificate
active
06188995
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to the distribution of computer software, and more particularly to a method and apparatus for automated enforcement of computer software licenses.
2. Background Art
Some computer software programs use so-called “resource libraries” to provide part of their functionality. There is usually a license fee required to use a resource library. Under current schemes, it is not always possible to charge the license fee to all users of a resource library. This problem can be understood by comparing software structures that use resource libraries with basic software structures that do not.
Basic Software Structure
FIG. 1
illustrates a basic software structure. In the example of
FIG. 1
, the software comprises two layers. These layers are the operating system
110
, and the application program
120
. Operating system
110
is responsible for controlling the allocation and usage of hardware resources such as memory, central processing unit (CPU) time, disk space, and peripheral devices. Operating system
110
provides a variety of specific functions that can be utilized by a variety of software programs such as application program
120
. Application program
120
provides specific end user functions, such as word processing, database management, and others. Application program
120
communicates with the computer hardware via functions provided by operating system
110
. Operating system
110
provides an interface between hardware
100
and application program
120
.
Resource Libraries
FIG. 2
illustrates a second software structure. The software structure of
FIG. 2
contains an additional layer of software, resource library
215
, interposed between application program
220
and operating system
110
. Resource library
215
provides a pre-packaged set of resources or routines that can be accessed by software programs such as application program
220
during execution. These resources provide higher level functions than those provided by operating system
210
. For example, these resources may provide routines for managing a graphical user interface, for communicating with other computers via a network, or for passing messages between program objects. Typically, resource library
215
provides one or more resources or functions that can be used by many different software programs. By using the prepackaged resources provided by resource library
215
, a software program such as application program
220
can be made smaller and program development time can be shortened because the program itself need not include code to provide the functions provided by resource library
215
.
In addition to application programs, resource libraries are used by other types of software programs, including device drivers, utility programs and other resource libraries.
Resource library
215
constitutes any set of one or more resources that exists separately from an application program or other software program and that can be used by more than one software program. For example, resource library
215
may comprise an application program interface (API), a toolkit, a framework, a resource library, a dynamic link library (DLL), an applet, or any other reusable resource, including an application program that can be accessed by another program (e.g. by using object linking and embedding (OLE)). Examples of resource libraries include Windows DLL's (DLL's used with the Microsoft Windows (TM) operating environment), the Apple Macintosh (TM) toolkit, the OpenStep API from NeXT Software, Inc., OLE enabled application programs such as Microsoft Word (TM), Java packages, and ActiveX applets.
A software program typically utilizes a resource provided by a resource library by sending an appropriate message to the resource library and supplying the parameters required for the resource to be executed. Assuming the appropriate parameters have been supplied, the resource executes, and an appropriate response message is returned to the requesting program.
A software program may use resources provided by several different resource libraries, a resource library may be used by several different programs, and a resource library may itself use other resource libraries.
FIG. 3
illustrates a computer system that includes several programs and several resource libraries. In the example of
FIG. 3
, there are two application programs
300
and
310
, and three resource libraries
320
,
330
, and
340
. Application program
300
uses resources provided by operating system
110
and by resource libraries
320
and
330
. Application program
310
uses resources provided by operating system
110
and by resource libraries
330
and
340
. The resources of resource library
330
are thus shared by application programs
300
and
310
.
License Fee
Generally, computer software is licensed to an end user for a fee. The end user pays a single purchase price or license fee in exchange for the right to use the end user program on a computer system. Resource libraries are often packaged or “bundled” with an end user program by the maker of the program such that the end user receives a copy of resource libraries required by a program when the end user buys a copy of the program. The price of the resource library is built into the end user program price. The end user program developer, in turn, pays a royalty to the resource library vendor for the right to bundle and resell the resource library.
Since a resource library can be used with multiple end user programs, once the end user receives a copy of the resource library, the end user can use the resource library with any other program that is compatible with the resource library. In this case, the resource library vendor receives no additional revenue when the vendor's resource library is used with additional programs. Accordingly, it would be desirable for a resource library vendor to be able to ensure that an end user can use the resource library only with programs for which a license fee has been paid to the vendor for use of the resource library. Thus there is a need for a software mechanism for enforcing software license agreements that automatically ensures that a resource library can only be used by programs that have been licensed for use with the resource library by the resource library vendor.
SUMMARY OF THE INVENTION
The present invention comprises a method and apparatus for enforcing software licenses for resource libraries. The term “resource library” as used herein refers to any reusable software resource that is usable by more than one program or other resource library. The term “resource library” includes, but is not limited to, an application program interface (API), a toolkit, a framework, a runtime library, a dynamic link library (DLL), an applet (e.g. a Java or ActiveX applet), an application program whose functionality can be accessed by other programs (e.g. using OLE) or any other reusable resource. The present invention allows the resource library to be selectively used only by authorized end user software programs. The present invention can be used to enforce a “per-program” licensing scheme for a resource library whereby the resource library is licensed only for use with particular software programs, as well as site licenses and other licensing schemes.
In one embodiment, an access authorization indicator such as a license text string and a corresponding license key are embedded in a program that has been licensed to use a resource library. The license text string and the license key are supplied, for example, by a resource library vendor to a program developer who wants to use the resource library with an end user program being developed.
The license text string includes information about the terms of the license under which the end user program is allowed to use the resource library. In one embodiment, the license key is an algorithmic derivation, such as, for example, a digital signature, of the license text string that is used to authenticate the license tex
Garst Blaine
Serlet Bertrand
Apple Computer Inc.
Retta Yehdega
The Hecker Law Group
Trammell James P.
LandOfFree
Method and apparatus for enforcing software licenses does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method and apparatus for enforcing software licenses, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for enforcing software licenses will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2601619