# US 7,610,631 B2 · Method and apparatus for provisioning software

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,631 B2
- Document ID: US7610631B2
- Status: Granted
- Kind: B2
- Application number: 10/989,122
- Filed: 2004-11-15
- Published: 2006-05-18
- Granted: 2009-10-27
- Earliest claimed: 2004-11-15
- Inventors: Alexander Frank; Curt Steeb; James Duffus; Mark C. Light; Martin Holladay; Paul Sutton; Thomas Phillips; Zeyong Xu; Zhangwei Xu
- Web page: https://patentgrep.com/patent/US7610631B2

## CPC

- G07F 7/1008: {Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system}
- G06F 21/10: Protecting distributed programs or content, e.g. vending or licensing of copyrighted material (protection in video systems or pay television H04N7/16) {; Digital rights management [DRM]}
- G06F 21/725: {operating on a secure reference time value}
- G06Q 20/3552: {Downloading or loading of personalisation data}
- H04L 9/3247: {involving digital signatures}
- H04L 9/3263: {involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements (network architectures or network communication protocols for supporting authentication of entities using certificates in a packet data network H04L63/0823)}
- H04L 63/0823: {using certificates (cryptographic mechanisms or cryptographic arrangements for entity authentication involving certificates H04L9/3263)}
- H04L 67/125: involving control of end-device applications over a network
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 2209/56: Financial cryptography, e.g. electronic payment or e-cash
- G07F: COIN-FREED OR LIKE APPARATUS (coin sorting G07D3/00; coin testing G07D5/00; {handling coins or paper currencies apart from payment activated apparatus G07D; payment architectures, schemes or protocols G06Q20/00})
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A dynamic software provisioning system allows provisioning software on a number of different computing devices based upon a desired business process. The dynamic software provisioning system allows a user to request usage of the operating system for a specific period of time, for a specific amount of usage, or in any other desired manner from an operating system provisioning service or from a third party. The provisioning service processes the request from the user or from the third party to provision the use of the operating system and in response to the request provisions use of the operating system for a specific device specified by the request. The dynamic software activation system also includes a local provisioning module located on the device using the operating system, wherein the local provisioning module activates and deactivates the operating system based on instructions received from the provisioning service.

## Claims

### Claim 1

A dynamic software provisioning system for provisioning software on a computing device that is communicatively coupled to a communications network, the dynamic software provisioning system comprising:
a computing device that is communicatively coupled to first and second computers by means of a communications network, the computing device containing software stored in memory;
a billing system implemented on the first computer, the first computer having a first computer-readable storage medium with first computer-executable instructions that, when executed, sell an amount of usage of the software stored in memory on the computing device;
a provisioning system implemented on the second computer, the second computer having a second computer-readable storage medium with second computer-executable instructions that, when executed, dynamically provision increments of usage of the software on the computing device, the provisioning system including:
a registration module that, when a registration request is received from the billing system, registers the computing device, the registration request including a hardware identification that contains information specific to components of the computing device,
a certificate module that, when executed, generates a provisioned device certificate,
a distribution and packet generation module that, when a packet generation request is received, generates a provisioning packet, the packet generation request including a provisioned device initialization key, and
the distribution module, when executed, also transmitting the provisioning packet to the computing device over the communications network; and
wherein the computing device includes:
a packet request module that, when executed, sends the packet generation request to the provisioning system and downloads the provisioning packet,
a storage module that, when executed, stores the provisioning packet,
a reliable clock manager that, when executed, generates time tick events corresponding to use of the software on the computing device,
login logic that, when executed, (i) qualifies login credentials to allow a user to operate the computing device, (ii) receives the time tick event, and (iii) forwards the time tick for processing;
a balance module that receives the time tick event from the login logic and updates an available balance corresponding to available use of the software on the computing device; and
an enforcement module that: (1) activates the software on the computing device if the balance value is above a threshold; and (2) de-activates the software on the computing device and de-activates the computing device for all purposes other than obtaining additional provisioning packets if the available balance is lowered below the threshold by the time tick event or if there is no available balance at login of the computing device.

### Claim 2 (depends on 1)

The dynamic software provisioning system of claim 1, wherein the provisioning system, requests a private key for the computing device and encodes the certificate with the private key.

### Claim 3 (depends on 1)

The dynamic software provisioning system of claim 1, wherein the billing system generates a pre-paid card printed with the initialization key and sells the prepaid card to a user via a retail store.

### Claim 4 (depends on 1)

The dynamic software provisioning system of claim 1, wherein the computing device further includes:
an activation module that receives the initialization key from the user; and
the request module generates the packet generation request with the initialization key.

### Claim 5 (depends on 1)

The plurality of computing devices of claim 1, wherein the computing device is a personal computer.

### Claim 6 (depends on 1)

The plurality of computing devices of claim 1, wherein the provisioning packet is an XML based provisioning packet.

### Claim 7 (depends on 1)

The dynamic software provisioning system of claim 1, wherein the computing device communicates with the billing system and the provisioning system using the Internet.

### Claim 8 (depends on 1)

The plurality of computing devices of claim 1, wherein the software is an operating system.

### Claim 9

A dynamic software provisioning system for provisioning software on a computing device that is communicatively coupled to a communications network, the dynamic software provisioning system comprising:
a computing device that is communicatively coupled to first and second computers by means of a communications network, the computing device containing software stored in memory;
a billing system implemented on the first computer, the first computer having a first computer-readable storage medium with first computer-executable instructions that, when executed, sell an amount of usage of the software stored in memory on the computing device;
a provisioning system implemented on the second computer, the second computer having a second computer-readable storage medium with second computer-executable instructions that, when executed, dynamically provision increments of usage of the software on the computing device, the provisioning system including:
a registration module that, when a registration request is received from the billing system, registers the computing device, the registration request including a hardware identification that contains information specific to components of the computing device,
a certificate module that, when executed, generates a provisioned device certificate,
a distribution and packet generation module that, when a packet generation request is received, generates a provisioning packet, the packet generation request including a provisioned device initialization key, and
the distribution module, when executed, also transmitting the provisioning packet to the computing device over the communications network; and
wherein the computing device includes:
a packet request module that, when executed, sends the packet generation request to the provisioning system and downloads the provisioning packet,
a storage module that, when executed, stores the provisioning packet,
a reliable clock manager that, when executed, generates time tick events corresponding to use of the software on the computing device,
login logic that, when executed, (i) qualifies login credentials to allow a user to operate the computing device, (ii) receives the time tick event, and (iii) forwards the time tick for processing;
a balance module that receives the time tick event from the login logic and updates an available balance corresponding to available use of the software on the computing device;
an enforcement module that: (1) activates the software on the computing device if the balance value is above a threshold; and (2) de-activates the software on the computing device and de-activates the computing device for all purposes other than obtaining additional provisioning packets if the available balance is lowered below the threshold by the time tick event or if there is no available balance at login of the computing device;
wherein the provisioning system requests a private key for the computing device and encodes the certificate with the private key;
wherein the billing system generates a pre-paid card printed with the initialization key and sells the prepaid card to a user via a retail store;
wherein the computing device further includes an activation module that receives the initialization key from the user;
wherein the request module, when executed, generates the packet generation request with the initialization key;
wherein the computing device is a personal computer;
wherein the provisioning packet is an XML based provisioning packet;
wherein the computing device communicates with the billing system and the provisioning system using the Internet; and
wherein the software is an operating system.
