`
`[19]
`
`5,204,897
`Apr. 20, 1993
`Wyman
`[45] Date of Patent:
`
`[11] Patent Number:
`
`llllllllllllll HI|||11||l||lllllllllllllllIIIIHIHIlllllllllllllllllllllll
`USOO5204897A
`
`agement system to account for software product usage.
`A management policy having a variety of alternative
`styles and contexts is provided. Each licensed product
`upon start-up makes a call to a license server to check
`on whether usage is permitted, and the license server
`checks a database of the licenses, called product use
`authorizations, that it administers. If the particular use
`requested is permitted, a grant is returned to the re-
`questing user node. The product use authorization is
`structured to define a license management policy allow-
`ing a variety of license alternatives by values called
`“style", “context”, “duration” and “usage requirements
`determination method”. The license administration may
`be delegated by the license server to a subsection of the
`organization, by creating another license management
`facility duplicating the main facility. The license server
`must receive a license document (a product use authori-
`zation) from an issuer of licenses, where a license docu-
`ment generator is provided. A mechanism is provided
`for one user node to make a call to use a software prod-
`uct located on another user node; this is referred to as a
`“calling card”, by which a user node obtains permission
`to make a procedure call to use a program on another
`node. A management interface allows a license manager
`at a server to modify the license documents in the data-
`base maintained by the server, within the restraints
`imposed by the license,
`to make delegations, assign-
`ments, etc. The license documents are maintained in a
`standard format referred to as a license document inter-
`change format so the management system is portable
`and can be used by all adhering software vendors. A
`feature of the database management is the use of a filter
`function.
`
`[54] MANAGEMENT INTERFACE FOR LICENSE
`MANAGEMENT SYSTEM
`
`[75]
`
`Inventor:
`
`Robert M. Wyman, Kirkland, Wash.
`
`[73] Assignee:
`
`Digital Equipment Corporation,
`Maynard, Mass.
`
`[21] App]. No.: 914,040
`
`[22] Filed:
`
`Jul. 14, 1992
`
`[63]
`
`Related U.S. Application Data
`Continuation of Ser. No. 722,840, Jun. 28, 1991, aban-
`cloned.
`
`Int. Cl.5
`[51]
`............................ .. H041. 9/00
`
`[52] U.S. Cl. . . . . . . . . . . . .. .
`. . . .. 380/4; 380/25
`[58] Field of Search ............................ .. 380/4, 123, 25
`
`[56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`4,780,821 10/1988 Crossley ............................ .. 364/200
`4,791,565 12/1988 Dunham et a1.
`.
`364/200
`4,924,378
`5/1990 Hershey et al.
`..
`364/200
`4,937,863
`1/1990 Robert et al.
`380/4
`5,023,907
`6/1991
`Johnson et al.
`380/4
`5,109,413
`4/1992 Comerford et al.
`.................. .. 380/4
`5,138,712
`8/1992 Corbin .................................. .. 380/4
`
`
`
`OTHER PUBLICATIONS
`
`Wyman, “Future Directions in Digital Distributed Soft-
`ware License Architecture”, Oral
`presentation,
`DECUS (Digital Equipment Computer User Society),
`Marlboro, Mass., May 10, 1990, 18 pages.
`
`Primagz Examiner—Salvatore Giangialosi
`Attorney, Agent, or Fz'rm—Arnold, White & Durkee
`
`[57]
`
`ABSTRACT
`
`A distributed computer system employs a license man-
`
`31 Claims, 18 Drawing Sheets
`
`10 (or 131
`
`
`
`
`
`® Lm_Reques1_A11ocation
`
`17o
`
`Lm_Ouery__A1Iocatlon
`
`Grant Calling card
`
`CALLER
`' PRODUCT - 1 '
`
`
`
`
`
`
`
`
`UCENSE
`MANAGEMENT
`SERVER
`
`
`
`
`
`
`
`
`
`
` Call Product - 1,
`Passing Calling Card
`
`
`UCENSE
`DATA BASE
`PUA'S
`
`Lm_Request_AlIocation,
`Passing CC
`
`CALLEE
`
`" PRODUCT - 2 '
`
`17b
`
`Petitioner Apple Inc. - Ex. 1016, p. 1
`
`Petitioner Apple Inc. - Ex. 1016, p. 1
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 1 of 18
`
`5,204,897
`
`.v.mu.-H-
`
`mmwm<mS<o
`mmzuu_._
`
`¢~2:
`
`_l
`
`
`
`mm>mwm:_am»uummm»z_
`7-z<mmmmm
`_pzmzwo<z<zaw
`
`mmzuu_4
`
`mmzmu_4
`
`cw
`
`
`momumzmgg__zmz:goo
`.mm:mm__moF<mwzmo
`
`:mmu_m,mwuzooma
`
`op
`
`msmmfim~
`
`0.
`
`
`
`imp}{Mo}.23imo.--
`
`o_9.e_
`
`mu»<um4wo.mmzm._4mfi
`
`mm>mum_wo<z<z
`.NN
`
`owm.z.m_.um
`
`z<mooma
`
`Petitioner Apple Inc. - Ex. 1016, p. 2
`
`Petitioner Apple Inc. - Ex. 1016, p. 2
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 2 of 18
`
`5,204,897
`
`License Unit Re uirements Table
`
`"""°'""° “Eng.
`mun
`Iitzumulm
`
`
`
`
`
`( Product Use
`Authorization )
`
`Licens
`
`e
`
`
`
`Release Date
`
`Licensee
`
`Start Date
`
`End Date
`
`
`
`
`
`
`[*1
`Units" Granted
`
`”""-°"“°"‘=""°
`‘*2
`jmj ‘£34
`ll-;
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`l
`
`—Token:
`
`S3
`
`54
`
`I no.2
`
`‘*3
`
`‘+4
`
`45
`
`as
`
`imam
`
`—%
`-mammal
`
`
`
`
`
`Table Looku -
`
`
`
`
`« Node ID
`
`Process Family
`1%
`
`
`
`Operating_System
`Platform _lD
`Private
`
`
`
`FI(3..3
`
`Petitioner Apple Inc. - Ex. 1016, p. 3
`
`Petitioner Apple Inc. - Ex. 1016, p. 3
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 3 of 13
`
`5,204,897
`
`
`
` Execute
`
`Unit 18
`
`Make Call
`
`Lm_Request_AIIocatIon (),
`Arguments:
`
`
`
`EXECUTE
`PROGRAM 17
`
`/
`
`FlG.5
`
`I I I II II I I I I
`
`____..____I
`
`68
`
`
`
`Lm_ReIease_AIIocation ()
`
`Make Call
`
`Receive
`Return Ack. 70
`
`
`Petitioner Apple Inc. - Ex. 1016, p. 4
`
`Petitioner Apple Inc. - Ex. 1016, p. 4
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 4 of 18
`
`5,204,897
`
`Eiom
`
`._o.:m
`
`ouoo
`
`3
`
`E:.om
`
`visa...2:.
`
`
`
` ...=3<0>0_._uOm_>
`
`8
`
`E30:
`
`.o:m
`
`0300
`
`
`
`.5:<o>m_=umtram.u2m.%.._wn._u
`
`one.
`
`
`
`:5»:£832mN.
`
`
`
`uEEmo..m..=:<33...Sum3.
`
`£305.
`
`
`
`._.=:<~53»:
`
`E
`
`3.8__<u>.o:oa::
`
`AV.oo__<..omao_omaE._AVoo_.<I.mu:cwmuE._
`
`@...nU-H
`
`mica:
`
`:._:.om
`
`
`
`o_u:aI.:S0
`
`
`
`....u<Efiom
`
`8uo§:.u_ao
`
`Petitioner Apple Inc. - Ex. 1016, p. 5
`
`Petitioner Apple Inc. - Ex. 1016, p. 5
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 5 of 18
`
`5,204,897
`
`
`
`..F.voaooma..
`
`
`
`mm._._<o:o_.moo__<I>.m:OnE4
`
`E3m:___aoEeu
`
`mmzmo:
`
`pzm:mc<z<2
`
`mu>mmm
`
`atA
`:o=muo__<s.m¢:UomnE._9
`
`
`
`.m_..5.2
`
`
`
`Emum:_=aomfimmma ¢..-sane...:3
`
`IWI:UE53'4
`
`.:o_=..oo__<|.mm:com..E._
`
`U0mémmua
`
`at
`
`Ea...0
`
`h..mU-n-
`
`mmzmo:
`
`
`
`mm<m<._.<D
`
`m_<:._
`
`Petitioner Apple Inc. - Ex. 1016, p. 6
`
`Petitioner Apple Inc. - Ex. 1016, p. 6
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 6 of 18
`
`5,204,897
`
`Object Identifier Value := =
`
`{
`
`iso(1)
`
`identified-organization(3)
`icd-ecma(12)
`
`member-company(2)
`dec(1011)
`data-syntaxes(1)
`cda(3)
`|dif(1 7)
`
`}
`Object identifier Encoding := = {
`
`0x6, OX8, Ox2B, OxC, 0x2,
`0x87, 0x73, 0x1, 0x3, 0x11
`
`}
`
`FIG. 8
`
`LDIF Object Identifier
`
`LD|FDocument
`
`document-descriptor
`document-header
`document-content
`
`}
`
`[PRIVATE 16373] IMPLICIT SEQUENCE {
`[O] IMPLICIT DocumentDescriptor OPTIONAL,
`[1] IMPLICIT DocumentHeader OPTIONAL,
`[2] IMPLICIT Documentcontent
`
`FIG. 9
`
`LDIF Document Syntax Diagram
`
`LDlFDocument
`r——————————r—
`DocumentDescriptor
`DocumentHeader
`major-version
`title
`minor-version
`author
`encoder-identifier
`version
`encoder-name
`date
`
`Documentcontent
`LicenseData
`license-data-element
`;
`'
`
`.
`
`;
`
`PrivateHeaderData
`value-name
`value-data
`
`-
`'
`
`FIG .
`
`1 0
`
`LDIF Document Structure
`
`Petitioner Apple Inc. - Ex. 1016, p. 7
`
`Petitioner Apple Inc. - Ex. 1016, p. 7
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 7 of 18
`
`5,204,897
`
`DocumentDescriptor
`major-version
`minor-version
`encoder-identifier
`encoder-name
`
`=
`
`.
`
`I
`
`SEQUENCE {
`[O] IMPLICIT INTEGER OPTIONAL,
`[1] IMPLICIT INTEGER OPTIONAL,
`[2] IMPLICIT Character-String OPTIONAL,
`[3] IMPLICIT Character-String OPTIONAL
`
`1 1
`
`Document Descriptor Syntax Diagram
`
`II
`
`:'
`
`r~.
`
`Pakgen DocumentDescriptor
`major-version 1,
`minor-version 0,
`encoder-identifier "PAKGEN",
`encoder-name {Character-String "PAK Generator V1 .O"}
`}
`
`FIG.
`
`1 2
`
`Document Descriptor Example
`
`DocumentHeader
`private—header-data
`title
`author
`version
`date
`
`=
`
`I
`
`SEQUENCE {
`[O] IMPLICIT NamedVaIueList OPTIONAL,
`[1] IMPLICIT Character-String OPTIONAL,
`[2] IMPLICIT Character-String OPTIONAL,
`[3] IMPLICIT Character-String OPTIONAL,
`[4] IMPLICIT UTCTime OPTIONAL
`
`.
`
`' FIG.
`
`1 3
`
`Document Header Syntax Diagram
`
`example-header document-header ::= {
`title {Character-String "PAKGEN Licenses with Associated LURT data")
`author {Character-String "Tom Jones, Foobar, Inc. License Department"}
`version {Character-String "V0.1 "}
`date "198801021100-0500"
`
`}
`
`FIG. 14 . Document Header Example
`
`Petitioner Apple Inc. - Ex. 1016, p. 8
`
`Petitioner Apple Inc. - Ex. 1016, p. 8
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 8 of 18
`
`5,204,897
`
`Document Content
`
`:: = SEQUENCE OF LicenseData
`
`. = SEQUENCE {
`LicenseData
`[0] IMPLICIT LicenseDataHeader,
`license-data-header
`[1] CHOICE {
`license-body
`[0] IMPLICIT ProductUseAuthorization,
`product-use-authorization
`license-units-requirements-table [1] IMPLICIT LURT,
`group-definition
`[2] IMPLICIT GroupDefinition,
`key-registration
`[3] IMPLICIT Keyfiegistration,
`issuer-delegation
`[4] IMPLICIT lssuerDeIegation,
`license-delegation
`[5] IMPLICIT LicenseDelegation,
`backup-delegation
`[6] IMPLICIT BackupDelegation
`
`'
`
`management-info
`
`}
`
`I.
`[2] IMPLICIT Managementlnfo OPTIONAL
`
`FIG.
`
`1 5
`
`Document Content Syntax Diagram
`
`I
`LicenseDataHeader
`
`license-id
`licensee
`term
`management—
`constraints
`signature
`issuer-comment
`
`LicenseData
`
`LicenseBody (one of)
`
`Managementinfo (optional)
`
`product—use-authorization
`license-units-requirements-table
`group-definition
`
`assignments
`reservations
`delegations
`
`key-registration
`issuer-delegation
`license-delegation
`backup-delegation
`
`backup-delegations
`allocations
`registration-date
`registrar
`local-comment
`extended-info
`
`FIG.
`
`1 6
`
`License Data Structure
`
`LicenseDataHeader
`license-id
`licensee
`—
`term
`management-constraints
`signature
`issuer-comment
`
`,
`
`::= SEQUENCE {
`»
`[O] IMPLICIT LicenseID,
`[1] IMPLICIT Character-String OPTIONAL,
`[2] IMPLICIT Term OPTIONAL,
`[4] IMPLICIT Managementconstraints OPTIONAL,
`[5] IMPLICIT Signature,
`[6] IMPLICIT NamedVaIueList OPTIONAL
`
`1 7
`
`License Data Header Syntax Diagram
`
`Petitioner Apple Inc. - Ex. 1016, p. 9
`
`Petitioner Apple Inc. - Ex. 1016, p. 9
`
`
`
`US. Patent
`
`Apr. 20, 1993
`
`Sheet 9 of 18
`
`ProductUseAuthorization
`product-id
`units-granted
`management-policy
`calling-authorizations
`caller-authorizations
`execution-constraints
`product-token
`
`::= SEQUENCE {
`[O] IMPLICIT ProductlD,
`[1] IMPLICIT INTEGER,
`[2] IMPLICIT ManagementPolicy,
`[3] IMPLICIT SEQUENCE OF Member OPTIONAL,
`[41 IMPLICIT SEQUENCE OF Member OPTIONAL,
`[5] IMPLICIT Executionconstraints OPTIONAL,
`[6] IMPLICIT NamedValueList OPTIONAL
`
`}
`
`FIG.
`
`1 8
`
`Product Use Authorization Syntax Diagram
`
`LURT
`
`lurt-name
`rows
`
`RowList
`
`::= SEQUENCE {
`[O] IMPLICIT Character-String,
`[1] IMPLICIT RowList
`
`}
`:: = SEQUENCE OF LurtRow
`
`LurtRow
`platform-id
`Iurt-columns .
`
`. = SEQUENCE{
`[0] IMPLICIT Character-String,
`[1] lMPLlClT SEQUENCE OF INTEGER
`
`}
`
`FIG.
`
`1 9
`
`License Unit Requirement Table Syntax Diagram
`
`Example LURT ::= {
`Iurt-name { Character-String "Example LURT"}
`rows {
`A
`LurtRow {
`{Character-String "PC-0"}
`{[10} {230} {-1}}
`LurtRow {
`{Character-String "PC-1"}
`{(12} {230} {-1)}
`LurtRow {
`{Character-String "VAX 6210'}
`{{158} {300} {150}}
`
`FIG. 20
`
`Example Encoding of LURT
`
`Petitioner Apple Inc. - Ex. 1016, p. 10
`
`Petitioner Apple Inc. - Ex. 1016, p. 10
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 10 of 18
`
`5,204,897
`
`Group Definition
`group-name
`group-version
`group-release-date
`group-members
`
`::= SEQUENCE {
`[OI IMPLICIT Character-String,
`[1] IMPLICIT Version,
`[2] IMPLICIT UTCTime,
`[3] IMPLICIT SEQUENCE OF Member
`
`}
`
`FIG. 21
`
`Group Definition Syntax Diagram
`
`KeyRegistration
`key-owner-name
`key-algorithm
`key-value
`
`::= SEQUENCE {
`[0] IMPLICIT Character-String,
`[1] IMPLICIT Character-String,
`[2] IMPLICIT OCTET STRING
`
`}
`
`FIG. 22
`
`Key Registration Syntax Diagram
`
`|ssuerDe|egation
`‘ delegated-issuer-name
`deIegated—product-id
`delegated-units-granted
`tempiate-authorization
`sub-license-permitted
`
`::= SEQUENCE {
`[OI IMPLICIT Character-String,
`[1] IMPLICIT SEQUENCE OF Member,
`[2] IMPLICIT INTEGER OPTIONAL,
`[3] IMPLICIT ProductUseAuthorization OPTIONAL,
`[4] IMPLICIT BOOLEAN DEFAULT FALSE
`
`}
`
`FIG. 23
`
`Issuer Delegation Syntax Diagram
`
`LicenseDelegation
`delegated-units
`delegated-distribution-control
`delegatee-execution-constraints
`assignment-list
`delegated-data
`
`::= SEQUENCE {
`[OI IMPLICIT INTEGER ‘OPTIONAL
`[I] IMPLICIT Distributioncontrol,
`[2] IMPLICIT Executionconstraints OPTIONAL,
`[3] IMPLICIT AssignmentList OPTIONAL,
`[4] IMPLICIT LicenseData OPTIONAL
`
`}
`
`FIG. 24
`
`License Delegation & Backup Delegation Syntax Diagrams
`
`Petitioner Apple Inc. - Ex. 1016, p. 11
`
`Petitioner Apple Inc. - Ex. 1016, p. 11
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 11 of 13
`
`5,204,897
`
`Managementlnfo
`assignments
`reservations
`delegations
`backup-delegations
`allocations
`registration-date
`registrar
`local-comment
`termination-date
`extended-info
`
`::= SEQUENCE {
`[01 IMPLICIT AssignmentList OPTIONAL,
`[‘1] IMPLICIT AssignmentList OPTIONAL,
`[2] IMPLICIT De|egationList OPTIONAL,
`[3] IMPLICIT De|egationList OPTIONAL,
`[4] IMPLICIT A|locationList OPTIONAL,
`[5] IMPLICIT UTCTime,
`[61 IMPLICIT Context,
`[7] IMPLICIT NamedValueList OPTIONAL,
`I8] IMPLICIT UTCTime OPTIONAL,
`[9] IMPLICIT NamedValueList OPTIONAL
`
`I
`
`FIG. 25 Managementlnfo Syntax Diagram
`
`AllocationList
`
`= SEQUENCE OF Allocation
`
`Allocation
`allocation-context
`allocation—lur
`allocation—group-id
`
`. = SEQUENCE {
`I0] IMPLICIT Context,
`[1] IMPLICIT INTEGER,
`I2] IMPLICIT INTEGER OPTIONAL
`
`}
`
`Allocation Syntax Diagram
`
`AssignmentList
`
`= SEQUENCE OF Assignment
`
`Assignment
`assigned-units
`assignment-term
`assignee
`
`. = SEQUENCE{
`[Oi IMPLICIT INTEGER,
`[1] IMPLICIT Term,
`[2] IMPLICIT Context ’
`
`I
`
`FIG. 27
`
`Assignment Syntax Diagram
`
`Petitioner Apple Inc. - Ex. 1016, p. 12
`
`Petitioner Apple Inc. - Ex. 1016, p. 12
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 12 of 18
`
`5,204,897
`
`ContextList
`
`= SEQUENCE OF Context
`
`Context
`
`= SEQUENCE OF Subcontext
`
`Subcontext
`sub-context-type
`subcontext-value
`
`. = SEQUENCEI
`[0] SubContextType,
`[1] VaIueData
`
`}
`::= CHOICE {
`SubContextType
`standard-subcontext-type
`[O] IMPLICIT INTEGER {
`network-subcontext(1 I,
`execution-domain-subcontext(2).
`Iogin-domain-subcontext(3),
`node—subcontext(4),
`process-family-subcontext(5),
`process-id-subcontext(6),
`user-name—subcontext(7),
`product-name-subcontext(8),
`operating—system-subcontext(9),
`platform-id—subcontext(10)
`I
`
`private-subcontext
`
`I1] IMPLICIT INTEGER {first(0),last(255)}
`
`}
`
`FIG. 28
`
`Context Syntax Diagram
`
`
`
`
`
`FOOBAR V4.1 Allocated Units
`
`Units
`
`Context Template
`
`Full Context Specifications
`
`ENET, AA Cluster, BLUE, PID-1..., WYMAN
`
`E B
`
`WYMAN
`
`LUE
`
`EE
`
`
`
`
`
`
`
`OLSEN
`WYMAN
`
`ENET, BB_C|uster, RED, PID-1..., OLSEN
`ENET, BB_C|uster, RED, PID-2..., WYMAN
`
`EE
`
`
`
`WYMAN
`
`ENET, AA_C|uster. GREEN, PID-1..., WYMAN
`
`WYMAN
`
`ENET, AA_C|uster, GREEN, PID-2..., WYMAN
`
`FIG. 29
`
`Only unique contexts require explicit unit allocations.
`
`Petitioner Apple Inc. - Ex. 1016, p. 13
`
`Petitioner Apple Inc. - Ex. 1016, p. 13
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 13 of 18
`
`5,204,897
`
`FOOBAR V4.1 Allocated Units
`
`Full Context Specifications
`
`ENET, AA_C|uster, BLUE, PlD—1..., WYMAN
`
`
`
`BIT
`IT
`ENET, BB_C|uster, RED, PID-2..., WYMAN
`IMO
`E ENET, AA__CIuster, GREEN, PID-2..., WYMAN
`
`ENET, BB_CIuster, RED, PID-1..., OLSEN
`
`
`
`FIG. 30 Modification of Context_TempIate impacts units requirements.
`
`'
`
`DistributionControl
`distribution-method
`refresh-distributionI1 I,
`initiaI-distribution-onIy(2),
`manual-distribution(3)
`
`::= SEQUENCE {
`I0] IMPLICIT INTEGER {
`
`current-start-date
`current-end-date
`refresh-interval
`retry-interval
`maximum-retry-count
`retries-attempted
`
`I
`
`};
`I1] IMPLICIT UTCTime OPTIONAL
`I2] IMPLICIT UTCTime OPTIONAL,
`[3] IMPLICIT IntervaITime OPTIONAL,
`[4] IMPLICIT lntervalTime OPTIONAL,
`[5] IMPLICIT INTEGER OPTIONAL,
`[6] IMPLICIT INTEGER OPTIONAL
`
`FIG. 31
`
`Distribution Control Syntax Diagram
`
`Executionconstraints ::= SEQUENCE{
`operating-system
`[0] IMPLICIT SEQUENCE OF Character~String OPTIONAL,
`execution-context
`[1] IMPLICIT ContextList OPTIONAL,
`environment-list
`I2] IMPLICIT SEQUENCE OF EnvironmentKind OPTIONAL
`
`}
`:: = INTEGER {
`
`EnvironmentKind
`batch(1 I.
`interactivei 2),
`locaI(3),
`network(4),
`remote(5)
`
`FIG. 32
`
`I
`Execution Constraints Syntax Diagram
`
`Petitioner Apple Inc. - Ex. 1016, p. 14
`
`Petitioner Apple Inc. - Ex. 1016, p. 14
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 14 of 13
`
`5,204,897
`
`License|D
`issuer
`serial-number
`amendment
`
`::= SEQUENCE {
`[O] IMPLICIT Character-String,
`[1] IMPLICIT Character-String,
`[2] IMPLICIT INTEGER DEFAULT 0
`
`}
`
`FIG. 33
`
`License ID Syntax Diagram
`
`LURDM
`combination-permitted
`overdraft-limit
`overdraft-Iogging-required
`allocation-size
`Iurdm-kind
`|urt(1),
`constant(2),
`private-lurdm(3)
`
`::= SEQUENCE {
`[O] IMPLICIT BOOLEAN DEFAULT TRUE,
`[1] IMPLICIT INTEGER DEFAULT 0,
`[2] IMPLICIT BOOLEAN DEFAULT FALSE,
`[3] IMPLICIT INTEGER OPTIONAL,
`[4] IMPLICIT INTEGER {
`
`named-Iurt-id
`Iurdm-value
`defauIt-unit-requirement
`}
`
`}l
`I5] IMPLICIT Character-String OPTIONAL,
`[6] IMPLICIT INTEGER OPTIONAL,
`[7] IMPLICIT INTEGER OPTIONAL
`
`34
`
`License Unit Requirements Determination Method Syntax Diagram
`
`’::= SEQUENCE {
`[O] IMPLICIT ContextList OPTIONAL,
`[1] IMPLICIT INTEGER {
`
`Managementconstraints
`management-context
`management-scope
`single-pIatform(1 I,
`management-domainI2),
`entire-networkI3)
`} OPTIONAL.
`[2] IMPLICIT BOOLEAN DEFAULT TRUE,
`[3] IMPLICIT BOOLEAN DEFAULT TRUE,
`[4] IMPLICIT IntervaITime OPTIONAL
`
`backup-permitted
`delegation-permitted
`maximum-delegation-period
`}
`
`FIG. 35 Management Constraints Syntax Diagram
`
`Petitioner Apple Inc. - Ex. 1016, p. 15
`
`Petitioner Apple Inc. - Ex. 1016, p. 15
`
`
`
`U.S_. Patent
`
`Apr. 20, 1993
`
`Sheet 15 of 18
`
`5,204,897
`
`ManagementPolicy
`style
`al|ocative(1 I,
`consumptive(2),
`private-style(3)
`
`context-template
`
`duration
`transaction(1 I,
`assignmentl2),
`immediatel3I
`
`::= SEQUENCE {
`[0] IMPLICIT INTEGER {
`
`,
`I,
`[1] IMPLICIT SEQUENCE OF SubcontextType
`OPTIONAL,
`[2] IMPLICIT INTEGER {
`
`Iur-determination-method
`allocation-sharing-limit
`reassignment-constraint
`I
`
`} OPTIONAL,
`[3] IMPLICIT LURDM OPTIONAL,
`[4] IMPLICIT INTEGER OPTIONAL,
`[5] IMPLICIT lntervaITime OPTIONAL
`
`Management Policy Syntax Diagram
`
`Member
`member-product
`member—sign'ature
`member-token
`
`::= SEQUENCE {
`[0] IMPLICIT ProductlD,
`[1] IMPLICIT Signature,
`[2] IMPLICIT NamedValueList OPTIONAL
`
`I
`
`FIG. 37 Member Syntax Diagram
`
`Namedvalue
`value-name
`value-data
`
`VaIueData
`value-boolean
`value-integer
`value-text
`value-general
`value-list
`
`::= SEQUENCE {
`Character-String,
`VaIueData
`
`I
`
`::= CHOICE {
`[O] IMPLICIT BOOLEAN,
`[1] IMPLICIT INTEGER,
`[2] IMPLICIT SEQUENCE OF Character-String
`I3] IMPLICIT OCTET STRING,
`[4] IMPLICIT SEQUENCE OF VaIueData
`
`I
`
`NamedValueList
`
`::= SEQUENCE OF Namedvalue
`
`Fi
`
`Named Value, Value Data & Named Value List Syntax Diagrams
`
`Petitioner Apple Inc. - Ex. 1016, p. 16
`
`Petitioner Apple Inc. - Ex. 1016, p. 16
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 16 of 13
`
`5,204,897
`
`ExampleList NamedVa|ueList ::= {
`Namedvalue {
`value-name {Character-String "Purchase Order")
`value-data {INTEGER 154493}
`
`} N
`
`I
`
`I
`
`amedvalue {
`vaIue—name {Character-String "Telephone Support 8*")
`value-data {Character-String {+1 (999) 555-1234}
`
`FIG. 39
`
`Named Value List Example
`
`Product|D
`producer
`product-name
`first-version
`last-version
`first—release-date
`last-release-date
`
`::= SEQUENCE {
`[0] IMPLICIT Character-String,
`[1] IMPLICIT Character-String,
`[2] IMPLICIT Version OPTIONAL,
`[3] IMPLICIT Version OPTIONAL,
`I4] IMPLICIT UTCTime OPTIONAL,
`[5] IMPLICIT UTCTime OPTIONAL
`
`I
`
`40
`
`Product ID Syntax Diagram
`
`Signature
`signature-algorithm
`signature-parameters
`signature-value
`
`::= SEQUENCE {
`[O] IMPLICIT Character-String,
`[1] IMPLICIT NamedVa|ueList OPTIONAL,
`[2] IMPLICIT OCTET STRING
`
`}
`
`FIG. 41
`
`Signature Syntax Diagram
`
`Term
`
`start-date
`end-date
`
`::= SEQUENCE {
`[O] IMPLICIT UTCTime OPTIONAL,
`I1] IMPLICIT UTCTime OPTIONAL,
`
`}
`
`FIG. 42
`
`Term Syntax Diagram
`
`Petitioner Apple Inc. - Ex. 1016, p. 17
`
`Petitioner Apple Inc. - Ex. 1016, p. 17
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 17 of 18
`
`5,204,897
`
`Version
`part-1
`part-2
`part-3
`part-4
`
`::= SEQUENCE {
`IO] IMPLICIT INTEGER,
`[1] IMPLICIT INTEGER DEFAULT 0,
`[2] IMPLICIT INTEGER DEFAULT O,
`[3] IMPLICIT INTEGER DEFAULT 0
`
`}
`
`FIG. 43
`
`Attributes Specific to Filter
`
`Attribute
`
`Value
`
`Syntax
`
`
`
`
`
`
`Value
`
`Value
`
`Length Number
`
`Value
`
`Initially
`
`0 or more
`
`0 or more
`
`
`
`
`
`
`0bject(Filter)
`
`EnumlFilter Type)
`Filter Type
`
`Filter Items
`
`Object(FiIter Item)
`
`Filters
`
`FIG. 44
`
`Syntax
`
`Length
`
`Number
`
`Initially
`
`Filter Item Type
`Attribute Type
`Match Value
`
`an
`
` Attributes Specific to Filter
`
`lnitialsubstring
`substring
`
`more
`
`
`
`License Request
`
`
`
`Object(License Request) —
`
`FIG. 45
`
`Petitioner Apple Inc. - Ex. 1016, p. 18
`
`Petitioner Apple Inc. - Ex. 1016, p. 18
`
`
`
`U.S. Patent
`
`Apr. 20, 1993
`
`Sheet 18 of 13
`
`5,204,897
`
`Filter {
`Filter-Type AND
`Filter-Item {
`Filter-Item-Type SELECT
`Attribute-Type Product-Use-Authorization
`Filter {
`Filter-Type AND
`Filter-Item{
`Filter-Item-Type SELECT
`Attribute-Type Calling-Authorization
`Filter{
`Filter-Type AND
`Filter—ltem {
`Filter-Item-Type EQUALITY
`Atribute-Type Producer
`Match-Value "Digital"
`
`} F
`
`}
`
`ilter-Item {
`Filter-Item-Type EQUALITY
`Attribute-Type Producer
`Match-Value "Amazing Database"
`
`
`
`}
`
`} F
`
`ilter-Item {
`Filter-ltem-Type EQUALITY
`Attribute-Type Producer
`Match-Value "Digital"
`
`l F
`
`ilter-ltem{
`Filter-Item-Type EQUALITY
`Attribute-Type lssuer
`Match-Value "Digital"
`
`}
`‘Filter-Item {
`Filter-Item-Type EQUALITY
`Attribute-Type Product-Name
`Match-Value "Amazing Graphics System"
`
`l
`
`l
`
`l
`
`l
`
`HG. 46
`
`Example Filter Value Notation
`
`Petitioner Apple Inc. - Ex. 1016, p. 19
`
`Petitioner Apple Inc. - Ex. 1016, p. 19
`
`
`
`1
`
`5,204,897
`
`MANAGEMENT INTERFACE FOR LICENSE
`MANAGEMENT SYSTEM
`
`RELATED CASES
`
`This application is a continuation of application Ser.
`No. 722,840, filed Jun. 28, 1991, now abandoned.
`This application discloses subject matter also dis-
`closed in the following copending applications, all as-
`signed to Digital Equipment Corporation, the assignee
`of this invention:
`Ser. No. 697,652, filed May 8, 1991, by Robert M. Wy-
`man, for LICENSE MANAGEMENT SYSTEM;
`Ser. No. 723,456, filed Jun. 28, 1991, by Robert M.
`Wyman,
`for LICENSE DOCUMENT INTER-
`CHANGE FORMAT FOR LICENSE MANAGE-
`MENT SYSTEM; and
`,
`Ser. No. 723,457l, filed Jun. 28, 1991, by Robert M.
`Wyman for FILTERS FOR LICENSE MANAGE-
`MENT SYSTEM.
`
`BACKGROUND OF THE INVENTION
`
`This invention relates to methods of operation of
`computer systems, and more particularly to a method
`and system for managing the licensing of software exe-
`cuted on computer systems.
`In U.S. Pat. No. 4,937,863, issued to Robert, Chase
`and Schafer and assigned to Digital Equipment Corpo-
`ration, the assignee of this invention, a Software Licens-
`ing Management System is disclosed in which usage of
`Licensed software may be monitored in a computer
`system to determine if a use is within the scope of a
`license. The system maintains a database of licenses for
`software products, and stores a unit value indicating the
`number of licensing units for each product. When a user
`wishes to use a licensed product, a message is sent to the
`central license management facility requesting a license
`grant. In response to this message, the facility accesses
`the database to see if a license exists for this product,
`and, if so, whether units may be allocated to the user,
`depending upon the user's characteristics, such as the
`configuration of the platform (CPU) which will execute
`the software product. If the license management facility
`determines that a license can be granted, it sends a mes-
`sage to the user giving permission to proceed with acti-
`vation of the product. If not, the message denies permis-
`sion.
`While the concepts disclosed in the U.S. Pat. No.
`4,937,863 are widely applicable, and indeed are em-
`ployed in the present invention, there are additional
`functions and alternatives that are needed in some appli-
`cations. For example, the license management system
`should allow for simultaneous use of a wide variety of
`different licensing alternatives, instead of being rigidly
`structured to permit only one or only a few. When
`negotiating licenses with users, vendors should have
`available a wide variety of terms and conditions, even
`though a given vendor may decide to narrow the selec-
`tion down to a small number. For example, a software
`product may be licensed to a single individual for use on
`a single CPU, or to an organization for use by anyone
`on a network, or for use by any users at terminals in a
`cluster, or only for calls from another specific licensed
`product, or any of a large number of other alternatives.
`A vendor may have a large number of products, some
`sold under one type of license and some under others, or
`a product may be a composite of a number of features
`from one or more vendors having different license poli-
`
`l0
`
`I5
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`2
`cies and prices; it would be preferable to use the same
`license management system for all such products.
`Distributed computing systems present additional
`licensing issues. A distributed system includes a number
`of processor nodes tied together in a network of servers
`and clients. Each node is a processor which may exe-
`cute programs locally, and may also execute programs
`or features (subparts of programs) via the network. A
`program executing on one node may make remote pro-
`cedure calls to procedures or programs on other nodes.
`In this case, some provision need be made for defining a
`license permitting a program to be executed in a distrib-
`uted manner rather than separately on a single CPU,
`short of granting a license for execution on all nodes of
`a network.
`In a large organization such as a company or govem-
`ment agency having various departments and divisions,
`geographically dispersed, a software license policy is
`difficult to administer and enforce, and also likely to be
`more costly,
`if individual
`licenses are negotiated,
`granted and administered by the units of the organiza-
`tion. A preferred arrangement would be to obtain a
`single license from the software producer, and then split
`this license into locally-administered parts by delega-
`tion. The delays caused by network communication can
`thus be minimized, as well as budgetary constraints
`imposed on the divisions or departments. Aside from
`this issue of delegation, the license management facility
`may best be operated on a network, where the licensing
`of products run on all nodes of the network may be
`centrally administered. A network is not necessary for
`use of the features of the invention however, since the
`license management can be implemented on a single
`platform.
`Software products are increasingly fragmented into
`specific functions, and separate distribution of the func-
`tions can be unduly expensive. For example, a spread-
`sheet program may have separate modules for advanced
`color graphics, for accessing a database, for printing or
`displaying an expanded list of fonts, etc. Customers of
`the basic spreadsheet product may want some, none or
`all of these added features. Yet, it would be advanta-
`geous to distribute the entire combination as one pack-
`age, then allow the customer to license the features
`separately, in various combinations, or under differing
`terms. The customer may have an entire department of
`the company needing to use the spreadsheet every day,
`but only a few people who need to use the graphics a
`few days a month. It is advantageous,
`therefore, to
`provide alternatives for varied licensing of parts of
`features of software packages, rather than a fixed policy
`for the whole package.
`'
`Another example of distribution of products in their
`entirety, but licensing in parts, would be that of deliver-
`ing CD ROMs to a customer containing all of the soft-
`ware that is available for a system, then licensing only
`those parts the customer needs or wishes to pay fees for
`rights to sue. Of course, the product need not be merely
`applications programs, operating systems, or traditional
`executable code, but instead could also include static
`objects such as printer fonts, for example, or graphics
`images, or even music or other sound effects.
`As will be explained below, calling and caller autho-
`rizations are provided in the system according to one
`feature of the invention, in order to provide technologi-
`cal support for a number of business practices and solve
`technical problems which require the use of what is
`
`Petitioner Apple Inc. - Ex. 1016, p. 20
`
`Petitioner Apple Inc. - Ex. 1016, p. 20
`
`
`
`3
`called “transitive licensing.” By “transitive licensing” is
`meant that the right to use one product or feature im-
`plies a right to use one or more other products or fea-
`tures. Transitive licenses are similar to group licenses in
`that both types of license consist of a single instrument
`providing rights of use for a plurality of products. How-
`ever, transitive licenses differ from group licenses in
`that they restrict the granted rights by specifying that
`the licensed products can only be used together and by
`further specifying one or more permitted inter-product
`calling/caller relationships. Some examples may help to
`clarify the use and nature of a transitive license: the
`examples to be explained are (1) two products sold
`together,
`(2) a give-away that results from narrow
`choices of licensing alternatives, (3) a client licensing
`method in a client/server environment, (4) impact of
`modular design, and (5) the impact of distributed de-
`sign.
`A software vendor might have two products for sale:
`the first a mail system, and the second a LEXIS TM -like
`content-based text retrieval system. Each of these prod-
`ucts might be valued at $500 if purchased separately.
`Some customers would be satisfied by purchasing the
`rights to use only one of these products. others might
`find that they can justify use of both. In order to in-
`crease the likelihood that customers will, in fact, pur-
`chase both products, it would not be surprising if the
`software vendor offered his potential customers a vol-
`ume discount, offering the two products for a combined
`price of $800. The customers who took advantage of 30
`this combined offer would find that they had received
`two products, each of which could be exploited to its
`fullest capabilities independently from the other. Thus,
`these customers would be able to use the content based
`retrieval system to store and retrieve non-main docu-
`ments. However, from time to time, the vendor may
`discover that particularly heavy users of mail wish to be
`able to use the content based retrieval system only to
`augment the filing capabilities provided by the standard
`mail offering. It is likely that many of these potential
`customers would feel that $800 is simply too much to
`pay for an extended mail capability. The vendor might
`then consider offering these customers a license that
`grants mail users the right to use the content-based
`retrieval system only when they are using mail and
`prohibits the use of content based retrieval with any
`other application that might be available on the custom-
`ers system. This type of license is referred to below a
`“transitive license,” and it might sell for $600.
`Another example is a relational database product
`(such as that referred to as Rdb TM ) designed for use on
`a particular operating system, e.g., VMS. This relational
`database product has two components: (1) A user inter-
`face used in developing new databases, and (2) a “run-
`time” system which supports the use of previously de-
`veloped databases. The developers of the database
`product might spend quite a bit of effort trying to get
`other products made by the vendor of the database
`product to use it as a database instead of having those
`other products build their own product-specific data-
`bases. Unfortunately, the other product designers may
`complain that the cost of a run-time license for the
`database product, when added to the cost of licenses for
`their products, would inevitably make their products
`uncompetitive. Thus,
`some mechanism would be
`needed that would allow one or another of the vendor’s
`products to use the run-time system for the relational
`database product in a “private” manner while not giv-
`
`35
`
`45
`
`50
`
`55
`
`65
`
`5,204,897
`
`10
`
`15
`
`20
`
`25
`
`4
`ing unlicensed access to products of other vendors. No
`such mechanism existed, prior to this invention; thus,
`the vendor might be forced to sell the right to use its
`run-time system for the database product with its pro-
`prietary operating system license. Clearly,
`this com-
`bined license would make it possible for the vendor’s
`products to use its database product without increasing
`their prices; however, it also would make it possible for
`any customers and third-parties to use the database
`product without paying additional license fees. How-
`ever, had the system of the invention been available, the
`vendor could have granted transitive licenses for the
`run-time component of its database product to all the
`vendor’s products. Essentially,
`these licenses would
`have said that the database run-time could be used with-
`out an additional license fee if and only if it was used in
`conjunction with some other of the vendor’s products.
`Any customer wishing to build a new relational data-
`base application or use a third-