throbber
(12) United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket