`Garst et al.
`
`US006188995B1
`US 6,188,995 B1
`Feb. 13, 2001
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`METHOD AND APPARATUS FOR
`ENFORCING SOFTWARE LICENSES
`
`0778512
`9714087
`
`6/1997 (EP) .
`4/1997 (W0) .
`
`(54)
`
`(75)
`
`(73)
`
`Inventors: Blaine Garst, Belmont; Bertrand
`Serlet, Palo Alto, both of CA (US)
`
`Assignee: Apple Computer, Inc., Cupertino, CA
`(US)
`
`(*)
`
`Notice:
`
`Under 35 U.S.C. 154(b), the term of this
`patent shall be extended for 0 days.
`
`(21)
`(22)
`(51)
`(52)
`
`(58)
`
`(56)
`
`Appl. No.: 08/901,776
`Filed:
`Jul. 28, 1997
`
`Int. Cl.7 .................................................... .. G06F 17/60
`US. Cl. ............................... .. 705/59; 705/50; 705/51;
`705/57; 705/58; 380/201; 380/202
`Field of Search ................................... .. 705/1, 50—52,
`705/57—59; 380/4, 201, 202
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,924,378 * 5/1990 Hershey et a1. ................... .. 364/200
`5,023,907 * 6/1991 Johnson et a1.
`380/4
`5,287,408 * 2/1994 Samson ..
`380/4
`5,343,527 * 8/1994 Moore
`380/4
`5,412,717 * 5/1995 Fischer
`380/4
`5,438,508 * 8/1995 Wyaman
`364/401
`5,592,549 * 1/1997 Nagelet a1. ........................... .. 380/4
`5,606,609 * 2/1997 Houser et a1. ......................... .. 380/4
`5,666,411 * 9/1997 McCarty ...... ..
`380/4
`5,673,316 * 9/1997 Auerbach et a1
`380/4
`5,745,879 * 4/1998 Wyman ........ ..
`705/1
`5,757,914 * 5/1998 McManis ............................. .. 380/23
`5,802,591 * 9/1998 Yachida .............................. .. 711/164
`5,822,739 * 10/1998 Kara ................................... .. 705/410
`
`FOREIGN PATENT DOCUMENTS
`
`11/1993 (EP) .
`0570123
`8/1995 (EP) .
`0667572
`0735488 * 10/1996 (EP) ....................................... .. 12/14
`
`OTHER PUBLICATIONS
`Yamada, Ken; Clamping doWn on pirates; Computer
`Reseller NeWs n690 pp. 3; Jul. 1, 1996*
`
`* cited by examiner
`
`Primary Examiner—James P. Trammell
`Assistant Examiner—Yehdega Retta
`(74) Attorney, Agent, or Firm—The Hecker LaW Group
`(57)
`ABSTRACT
`
`The present invention comprises a method and apparatus for
`enforcing softWare licenses for resource libraries such as an
`application program interface (API), a toolkit, a framework,
`a runtime library, a dynamic link library (DLL), an applet
`(eg a Java or ActiveX applet), 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. In one embodiment, 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 devel
`oper 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. The
`license key is used to authenticate the license text string. The
`resource library in turn is provided With means for reading
`the license text string and the license key, and for
`determining, using the license key, Whether the license text
`string is authentic and Whether the license text string has
`been altered. Resource library functions are made available
`only to a program having an authentic and unaltered license
`text string.
`
`75 Claims, 12 Drawing Sheets
`
`Application Program 1
`
`Application Program 2
`
`300
`
`v
`Resource
`Library 1
`
`320
`
`Resource
`(- Library 2
`
`‘V
`
`l T
`330
`Operating System
`
`V
`
`1‘
`
`310
`
`Resource
`Library 3 \
`340
`
`A
`
`‘V
`
`\
`
`110
`
`Computer Hardware
`
`100
`
`Page 1 of 23
`
`GOOGLE EXHIBIT 1012
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 1 0f 12
`
`US 6,188,995 B1
`
`Application Program
`
`l
`
`i
`
`Operating System
`
`,
`
`i
`
`Computer Hardware
`
`Application Program
`
`Resource Library
`
`ii
`ii
`i
`
`Operating System
`
`i
`
`Computer Hardware
`
`FIG. 1
`
`FIG. 2
`
`120
`
`N
`
`110
`
`100
`
`220
`
`215
`
`110
`
`100
`
`Page 2 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 2 0f 12
`
`US 6,188,995 B1
`
`FIG. 3
`
`f Application Program 1
`
`Application Program 2
`
`ii
`
`Resource
`Library 1
`
`320
`
`i
`
`330
`
`i
`
`Resource
`Library 2
`
`Operating System
`
`T
`T
`
`A
`
`310
`
`Resource
`Library 3
`
`ii
`
`340
`
`110
`
`Computer Hardware
`
`100
`
`Page 3 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 3 0f 12
`
`US 6,188,995 B1
`
`FIG. 4
`
`Display
`f divice
`410
`
`400 \
`
`CPU
`
`"1Put device
`
`K
`430
`
`Network
`F interface
`440
`
`r Printer
`
`450
`
`Mass storage
`
`Removable
`Media
`
`420
`
`425
`
`Page 4 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 4 0f 12
`
`US 6,188,995 B1
`
`Application Program
`
`Prog. Lic. Mod. \220
`510\i T K 500
`
`FLL. Lic. Mod.
`Resource Library \
`i T
`215
`
`FIG. 5
`
`\
`Operating System
`110
`i
`T
`Computer Hardware \
`
`100
`
`Prog. Lic. Mod.
`
`610
`
`\ Lic. Text Str. \
`510\l T \500
`Verification
`\
`620
`EL. Lic. Mod.
`
`s00
`
`FIG. 6
`
`License
`
`\
`
`Page 5 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 5 0f 12
`
`US 6,188,995 B1
`
`FIG. 7
`
`Fleq.
`program
`ident. in
`text?
`
`755
`
`Yes
`
`other
`Terms In
`"(1- text?
`
`No
`
`Program sends
`request message
`to resource library
`
`I
`700
`
`v
`H.L. obtains
`program's licence
`r- text and license key
`705
`
`f‘ FLL. verifies license
`
`710
`
`f- 760
`
`Access denied
`
`770
`/_
`
`Access granted
`
`r- 780
`
`Access denied
`
`785
`
`No
`
`Access denied \
`
`730
`
`Access granted
`
`Check License
`(- Terms
`
`f’- 750
`
`Access Denied
`
`Page 6 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 6 0f 12
`
`US 6,188,995 B1
`
`FIG. 8
`
`820
`
`Application Program
`
`Application Kit
`
`Display Postscript
`System
`
`804
`
`Device-Dependent
`Windowing
`K Extensions
`806
`
`Foundation
`Kit
`
`Operating System
`
`800
`
`802
`
`808
`
`810
`
`Page 7 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 7 0f 12
`
`US 6,188,995 B1
`
`FIG. 9
`
`Application Program
`
`/ Constant Declarations
`
`900
`
`901
`
`LicenseKeyString
`
`‘\
`
`LioenseAgreementString r~\\9O2
`\904
`
`/ UNLOCK
`923
`
`CHECK LICENSE
`
`API \
`920
`
`921
`
`CHECK \\
`\ 922
`
`A
`
`Operating System
`
`910
`
`Page 8 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 8 0f 12
`
`US 6,188,995 B1
`
`Start UNLOCK
`function
`l
`
`\
`1 002
`
`' Read LicenseKey
`String and License
`AgreementString \
`from API
`1004
`
`FIG. 10
`
`Site
`License?
`
`>
`
`1 006
`
`Read LicenseKey
`String and License
`AgreementString
`from calling entity
`
`1008
`
`Entity
`Licensed’?
`
`1010
`
`1
`Return Success/
`Return FaiV
`Deny Access \ Grant Access \
`1012
`1014
`
`Page 9 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 9 0f 12
`
`US 6,188,995 B1
`
`Start CHECK
`LICENSE function
`
`1102
`
`Assemble Public Key,
`LicenseKeyString
`/ and License
`1104
`AgreementString
`as argument
`
`7
`
`Call CHECK
`K- function
`1108
`
`Check licence terms
`
`1112
`
`LicenseAgreementString
`
`LicenseKeyString
`
`904
`
`902
`
`FIG. 11
`
`1106
`
`Current
`date
`valid?
`
`No
`
`Date
`limited?
`
`1116
`
`Return FAIL
`
`Return PASS
`
`1126
`
`Page 10 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 10 0f 12
`
`US 6,188,995 B1
`
`/ Start CHECK
`function
`1202
`
`l
`
`FIG. 12
`
`Receive
`LicenseKeyString,
`/' LicenseAgmtString,
`1203
`and vendor pub.key
`
`l
`
`Verify that
`LicenseKeyString
`/ comprises digital
`signature of
`1204
`LicenseAgmtString
`
`K- Fieturn PASS
`1210
`
`Return FAIL \
`1212
`
`Page 11 of 23
`
`
`
`U.S. Patent
`
`Feb. 13,2001
`
`Sheet 11 0f 12
`
`US 6,188,995 B1
`
`FIG. 13
`
`800
`
`\
`Application Program
`
`82o
`
`Appllcatlon Klt
`
`Display Postscript
`System
`f
`804
`
`Device-Dependent
`Windowing
`f Extensions
`806
`
`1302
`
`/
`/
`
`lnfo.plist
`NSLicenseAgreement
`NSLlcenseKey
`‘
`
`/— Unlock
`1308
`
`Foundation
`Kit
`NSCheck
`License
`Check -
`Pub. key
`131 6
`\
`Gen
`
`Operating System
`
`1 304
`
`1312
`
`1314
`
`808
`
`810
`
`Page 12 of 23
`
`
`
`U.S. Patent
`
`Feb. 13, 2001
`
`Sheet 12 0f 12
`
`US 6,188,995 B1
`
`FIG. 14
`
`K1402
`
`HTML Page
`
`HTML Browser
`
`1430
`/
`/
`r1434
`
`, Applet Tag
`
`1406
`/
`/ Applet Parameters '— "“' I’
`1404
`
`Applet
`
`/1436
`
`I
`CheckLicense
`
`1433’ Vend- Pub- Key
`
`LicAgmtString
`L_
`K St ,
`
`--\
`\
`
`Java Virtual Machine
`
`/ //
`
`1410
`
`1432
`
`API
`
`/
`1424 —/
`
`Operating System
`
`1422 _//
`
`Client Computer
`
`\ 1420
`
`Page 13 of 23
`
`
`
`US 6,188,995 B1
`
`1
`METHOD AND APPARATUS FOR
`ENFORCING SOFTWARE LICENSES
`
`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 struc
`tures that use resource libraries With basic softWare struc
`tures 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 con
`trolling 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 speci?c functions that can be utiliZed by a variety
`of softWare programs such as application program 120.
`Application program 120 provides speci?c 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 soft
`Ware structure of FIG. 2 contains an additional layer of
`softWare, resource library 215, interposed betWeen applica
`tion 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 oper
`ating system 210. For example, these resources may provide
`routines for managing a graphical user interface, for com
`municating 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
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`2
`another program (eg by using object linking and embed
`ding (OLE)). Examples of resource libraries include Win
`doWs DLL’s (DLL’s used With the Microsoft WindoWs
`
`(TM) operating environment), the Apple Macintosh 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 request
`ing 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 librar
`ies 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 agree
`ments 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 (eg a Java or
`ActiveX applet), an application program Whose functional
`ity can be accessed by other programs (eg using OLE) or
`any other reusable resource. The present invention alloWs
`
`Page 14 of 23
`
`
`
`US 6,188,995 B1
`
`3
`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 teXt string. The resource
`library in turn is provided With a checking routine that
`includes means for reading the license teXt string and the
`license key, and for determining, using the license key,
`Whether the license teXt string is authentic and Whether the
`license teXt string has been altered. Resource library func
`tions are made available only to a program having an
`authentic and unaltered license teXt string.
`In one embodiment, the license key constitutes the
`resource library vendor’s digital signature of the license teXt
`string. The resource library has a checking routing for
`verifying the resource library vendor’s digital signature. The
`resource library is unlocked and made available for use With
`the requesting program only if the license teXt string is
`veri?ed as authentic by the resource library. For a given
`program, only the resource library proprietor can produce a
`license key for a particular license agreement that Will
`unlock the resource library for that program and that pro
`gram only. Any modi?cation of the license key or the license
`agreement teXt string in the requesting softWare program is
`detected by the checking routine, causing the resource
`library to remain locked. The license teXt string may also
`specify an expiration date for the license, in Which case the
`resource library is unlocked only if the eXpiration date has
`not yet occurred.
`In one embodiment, a per-site enforcement method is
`provided, in Which any softWare program present at a given
`user site Works With the resource library once the resource
`library is provided With the proper per-site license key.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 illustrates an eXample of a softWare structure.
`FIG. 2 illustrates an eXample of a softWare structure
`including a resource library.
`FIG. 3 illustrates an eXample of a softWare structure
`including several application programs and resource librar
`ies.
`FIG. 4 illustrates an embodiment of a computer system
`that can be used With the present invention.
`FIG. 5 illustrates a softWare structure of one embodiment
`of the present invention.
`FIG. 6 illustrates a softWare structure of one embodiment
`of the present invention.
`FIG. 7 is a How chart illustrating the operation of one
`embodiment of the present invention.
`FIG. 8 illustrates a softWare structure of one embodiment
`of the present invention.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`4
`FIG. 9 illustrates a softWare structure of one embodiment
`of the present invention.
`FIG. 10 is a How start illustrating the operation of one
`embodiment of the present invention.
`FIG. 11 is a How start illustrating the operation of one
`embodiment of the present invention.
`FIG. 12 is a How start illustrating the operation of one
`embodiment of the present invention.
`FIG. 13 illustrates a softWare structure of an embodiment
`of the present invention using the OpenStep API.
`FIG. 14 illustrates an embodiment of the invention in
`Which the resource library is an applet.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`A method and apparatus for enforcing softWare licenses is
`described. In the folloWing description, numerous speci?c
`details are set forth in order to provide a more thorough
`description of the present invention. It Will be apparent,
`hoWever, to one skilled in the art, that the present invention
`may be practiced Without these speci?c details. In other
`instances, Well-knoWn features have not been described in
`detail so as not to obscure the invention.
`Computer System
`The present invention can be implemented on any of a
`variety of computer systems, including, Without limitation,
`netWork computers, special purpose computers, and general
`purpose computers such as the general purpose computer
`illustrated in FIG. 4. The computer system shoWn in FIG. 4
`includes a CPU unit 400 that includes a central processor,
`main memory, peripheral interfaces, input-output devices,
`poWer supply, and associated circuitry and devices; a display
`device 410 Which may be a cathode ray tube display, LCD
`display, gas-plasma display, or any other computer display;
`an input device 430, Which may include a keyboard, mouse,
`digitiZer, or other input device; non-volatile storage 420,
`Which may include magnetic, re-Writable optical, or other
`mass storage devices; a transportable media drive 425,
`Which may include magnetic, re-Writable optical, or other
`removable, transportable media, and a printer 450. The
`computer system may also include a netWork interface 440,
`Which may include a modem, alloWing the computer system
`to communicate With other systems over a communications
`netWork such as the Internet. Any of a variety of other
`con?gurations of computer systems may also be used. In one
`embodiment, the computer system comprises an Intel Pen
`tium (tm) CPU and runs the Microsoft WindoWs 95 (tm)
`operating environment. In another embodiment, the com
`puter system comprises a Motorola 680X0 series CPU and
`runs the NeXTStep operating system.
`When a computer system eXecutes the processes and
`process ?oWs described herein, it is a means for enforcing
`softWare licenses.
`The invention can be implemented in computer program
`code in any desired computer programming language.
`Licensing Module
`FIG. 5 is a block diagram illustrating softWare compo
`nents of one embodiment of the present invention. As shoWn
`in FIG. 5, this embodiment, like the prior art embodiment of
`FIG. 2, includes computer hardWare 100, operating system
`110, application program 220 and resource library 215.
`HoWever, the present invention adds tWo additional compo
`nents: Program licensing module 500 and resource library
`licensing module 510. These modules are shoWn in greater
`detail in FIG. 6.
`FIG. 6 illustrates program licensing module 500 and
`resource library licensing module 510 in one embodiment of
`
`Page 15 of 23
`
`
`
`US 6,188,995 B1
`
`5
`the present invention. As shown in FIG. 6, program licensing
`module 500 contains license text string 600 and license key
`610. License text string 600 contains data specifying terms
`of the software license agreement under Which the resource
`library vendor has licensed the program containing program
`licensing module 510 to use the vendor’s resource library.
`For example, license text string 600 may include the fol
`loWing text:
`Table 1: Example License Text String
`
`10
`
`6
`resource library licensing module 510 reads license text
`string 600 and license key 610 from the requesting program.
`In one embodiment, license text string 600 and license key
`610 are sent to the resource library by the requesting
`program along With a request for access to the resource
`library. In another embodiment, resource library licensing
`module 510 reads license text string 600 and license key 610
`from a constant de?nition section of the requesting program.
`Resource library licensing module 510 uses license key
`610 to verify the content of license text string 600 in the
`same manner as a digital signature is used to verify an
`electronic message. Using license veri?cation module 620,
`resource library licensing module 510 veri?es that license
`text string 600 is authentic (i.e. Was generated by the
`resource library vendor) and unaltered. If the veri?cation
`process is unsuccessful, indicating that the digital signature
`is not good, resource library licensing module 510 refuses
`the requesting program’s request for access to the resource
`library. If the veri?cation process is successful, resource
`library licensing module 510 inspects the license to deter
`mine any license limitations included in license text string
`600.
`The example license text string 600 shoWn in Table 1
`above identi?es “Program A” as the program that is licensed
`to use the resource library, and states that the license has “No
`expiration date.” Resource library licensing module 510
`obtains the name of “Program A” from license text string
`600, and checks Whether the requesting program is Program
`A. If the requesting program is a program other than
`Program A, access to the resource library is denied.
`Rather than specifying “No expiration date” as in the
`present example, license text string 600 may specify an
`expiration date and/or a beginning date for the license. If any
`such dates are speci?ed in license text string 600, resource
`library licensing module 510 checks to make sure that the
`current date falls Within the period of validity of the license
`prior to granting access to the resource library. If the current
`date is not Within the license’s period of validity, the
`requesting program is denied access to the resource library.
`Access Procedure
`The process used by a resource library to grant or deny
`access to a requesting program in one embodiment of the
`invention is illustrated in FIG. 7. In one embodiment, this
`process occurs the ?rst time a program requests access to a
`resource library. In another embodiment, this process occurs
`each time the resource library receives a request for access.
`As shoWn in FIG. 7, the process begins With a requesting
`program making a request to use the resource library at step
`700. At step 705, the resource library obtains the requesting
`program’s license text and license key. The license text and
`license key may, for example, be included in the request, or
`the resource library may read the license text and license key
`from a constant declaration area of the requesting program,
`or the resource library may obtain the license text and
`license key by some other means.
`After obtaining the license text and license key, the
`resource library veri?es the authenticity of the license text,
`using the license key, at step 710. At step 725, a the resource
`library determines Whether the veri?cation is successful. If
`the authenticity of the license text is not veri?ed, access to
`the resource library is denied at step 730.
`If the veri?cation of the authenticity of the license text is
`successful, the resource library checks the license terms
`included in the license text at step 735. At step 740, the
`resource library determines Whether a limited validity period
`is speci?ed in the license text. If no validity period is
`speci?ed, the process continues on to step 755. If a validity
`
`15
`
`35
`
`“(c) Copyright 1997. Resource Library Vendor, Inc. Pro
`gram A is licensed to use Resource Library D. No
`expiration date. This license may not be legally copied
`or transferred to another program.”
`In the example shoWn in Table 1, license text string 600
`speci?es the name of the resource library vendor (“Resource
`Library Vendor, Inc.), the name of the program licensed to
`use the resource library (“Program A”), and the name of the
`resource library that has been licensed (“Resource Library
`D”). License text string 600 also indicates that the license
`has “No expiration date.”
`License key 610 is algorithmically derived from license
`text string 600. In one embodiment, license key 610 com
`prises a digital signature of the resource library vendor.
`A digital signature is a mechanism that has been devel
`25
`oped to help ensure the integrity of electronic messages. A
`digital signature is used to authenticate an electronic mes
`sage and to determine Whether an electronic message has
`been altered.
`One form of digital signature uses a message digest. A
`message digest is a value that is generated When an elec
`tronic message is passed through a one Way encryption
`process (“digesting process”) such as a hashing routine. An
`ideal digesting process is one for Which the probability that
`tWo different electronic messages Will generate the same
`message digest is near Zero. In this form of digital signature,
`both the originator and the recipient need to knoW Which
`digesting process is being used. The originator generates the
`electronic message, and generates a message digest by
`passing the electronic message through the digesting pro
`cess. The originator digitally signs the resulting message
`digest, for example by performing an algorithmic operation
`on the message digest using the originator’s private key.
`Alternatively, instead of generating a message digest and
`signing the message digest, a sender may sign the message
`itself.
`To verify the authenticity of a digitally signed message,
`the recipient obtains the electronic message and the digital
`signature of the sender. The recipient veri?es the digital
`signature using an appropriate veri?cation process. For
`example, in one embodiment, the recipient veri?es the
`digital signature by performing an algorithmic process on
`the digital signature using the sender’s public key. The
`veri?cation process veri?es that the electronic message Was
`(1) digitally signed by the sender, and (2) that the electronic
`message content Was not changed from the time that it Was
`signed to the time that the digital signature Was veri?ed.
`In the present embodiment of the invention, the “mes
`sage” that is digitally signed is license text string 600. The
`signer is the resource library vendor. The result is license key
`610.
`License text string 600 and license key 610 are used by
`resource library licensing module 510 to verify that a
`requesting program has been licensed to use the resource
`library. As shoWn in FIG. 6, resource library licensing
`module 510 includes a license veri?cation module 620.
`When a program requests access to the resource library,
`
`45
`
`55
`
`65
`
`Page 16 of 23
`
`
`
`US 6,188,995 B1
`
`7
`period is speci?ed, the resource library checks Whether the
`validity period has expired at step 745. The validity period
`Will have expired either if the current date is before a
`beginning date speci?ed in the license text or if the current
`date is after an expiration date speci?ed in the license text.
`If the validity period has expired, access to the resource
`library is denied at step 750.
`If the validity period has not expired, processing contin
`ues to step 755. At step 755, the resource library determines
`Whether the requesting program is the same program as the
`program speci?ed in the license text. If the requesting
`program is not the program speci?ed in the license text,
`access to the resource library is denied at step 760. If the
`requesting program is the program speci?ed in the license
`text, the resource library checks Whether there are any other
`license terms contained in the license text at step 765. If
`there are no other license terms, access to the resource
`library is granted at step 770. If there are other license terms,
`the resource library checks Whether those terms are satis?ed
`at step 775. If the terms are not satis?ed, access to the
`resource library is denied at step 780. If the terms are
`satis?ed, access to the resource library is granted at step 785.
`The invention may be implemented in the Objective-C
`language. Objective-C is essentially the ANSI C language
`With object messaging extensions. A full description of the
`Objective-C language appears in “Object-Oriented Pro
`gramming and the Objective-C Language,” published by
`Addison-Wesley (ISBN 0-201-63251-9) (1993), and incor
`porated by reference herein. HoWever, the invention can also
`be implemented in any other suitable computer program
`ming language.
`As described beloW, the invention can be implemented by
`embedding appropriate segments of program code in the
`source code of a program that uses a resource library and in
`the source code of the resource library itself. The resource
`library is compiled to produce an executable implementation
`Which can be linked to a compiled and executable version of
`the program.
`Application Program Interface (API)
`In one embodiment of the invention, the resource library
`is an application program interface (“API”). An API has
`three major functions: it receives requests from an applica
`tion program to carry out fundamental operations such as
`receiving user input or displaying output; it converts each
`request into a form understandable by the particular oper