System and method for software licensing
First Claim
1. A computer-implemented method comprising the following steps:
- creating a license pack at a license generator, the license pack containing a set of one or more individual software licenses;
signing the license pack with a digital signature of the license generator;
issuing the license pack to a license server;
verifying, at the license server, the license generator'"'"'s digital signature on the license pack;
distributing the software licenses contained in the license pack from the license server to corresponding clients;
determining whether an individual client has a non-expired license;
in the event that the client has a non-expired license, forwarding the non-expired license to the individual client; and
in the event that the client does not have a non-expired license, granting one of the software licenses from the license pack.
2 Assignments
0 Petitions
Accused Products
Abstract
A software licensing system includes a license generator located at a licensing clearinghouse and at least one license server and multiple clients located at a company or entity. When a company wants a software license, it sends a purchase request (and appropriate fee) to the licensing clearinghouse. The license generator at the clearinghouse creates a license pack containing a set of one or more individual software licenses. To prevent the license pack from being copied and installed on multiple license servers, the license generator assigns a unique license pack ID to the license pack and associates the license pack ID with the particular license server in a master license database kept at the licensing clearinghouse. The license generator digitally signs the license pack and encrypts it with the license server'"'"'s public key. The license server is responsible for distributing the software licenses from the license pack to individual clients. When a client needs a license, the license server determines the client'"'"'s operating system platform and grants the appropriate license. To prevent an issued license from being copied from one client machine to another, the software license is assigned to a specific client by including a client ID within the license. The software license also has a license ID that is associated with the client ID in a database record kept at the license server. The license server digitally signs the software license and encrypts it using the client'"'"'s public key. The license is stored locally at the client.
-
Citations
20 Claims
-
1. A computer-implemented method comprising the following steps:
-
creating a license pack at a license generator, the license pack containing a set of one or more individual software licenses;
signing the license pack with a digital signature of the license generator;
issuing the license pack to a license server;
verifying, at the license server, the license generator'"'"'s digital signature on the license pack;
distributing the software licenses contained in the license pack from the license server to corresponding clients;
determining whether an individual client has a non-expired license;
in the event that the client has a non-expired license, forwarding the non-expired license to the individual client; and
in the event that the client does not have a non-expired license, granting one of the software licenses from the license pack. - View Dependent Claims (2)
-
-
3. A computer-implemented method comprising the following steps:
-
creating a license pack at a license generator, the license pack containing a et of one or more individual software licenses;
signing the license pack with a digital signature of the license generator;
issuing the license pack to a license server;
verifying, at the license server, the license generator'"'"'s digital signature on the license pack;
distributing the software licenses contained in the license pack from the license server to corresponding clients; and
evaluating whether an individual client already has a software license that has not yet expired.
-
-
4. A computer-implemented method comprising the following steps:
-
creating a license pack at a license generator, the license pack containing a set of one or more individual software licenses;
signing the license pack with a digital signature of the license generator;
issuing the license pack to a license server;
verifying, at the license server the license generator'"'"'s digital signature on the license pack;
distributing the software licenses contained in the license pack from the license server to corresponding clients;
submitting an old software license from one of the clients to the license server, the old software license containing a license ID;
determining whether an upgrade software license is available for the license ID;
granting the upgrade software license if available to the one client; and
replacing, at the one client, the old software license with the upgrade software license.
-
-
5. A computer-implemented method comprising the following steps:
-
creating a license pack at a license generator, the license pack containing a set of one or more individual software licenses;
signing the license pack with a digital signature of the license generator;
issuing the license pack to a license server;
verifying, at the license server, the license generator'"'"'s digital signature on the license pack;
distributing the software licenses contained in the license pack from the license server to corresponding clients; and
distributing a temporary license in an event that no more licenses are available from the license pack.
-
-
6. A computer-implemented method comprising the following steps:
-
receiving a request for a software license from a particular client;
determining an authenticity of the particular client;
selecting a software license from a pack of software licenses that is appropriate for the particular client, the software license having an associated license ID;
associating the license ID with the particular client;
granting the software license to the particular client; and
determining whether the particular client already has a non-expired license, and if so, forwarding the non-expired license to the particular client rather than granting the software license.
-
-
7. A computer-implemented method comprising the following steps:
-
receiving;
a request for a software license from a particular client;
determining an authenticity of the particular client;
selecting a software license from a pack of software licenses that is appropriate for the particular client, the software license having an associated license ID;
associating the license ID with the particular client;
granting the software license to the particular client; and
granting a temporary software license that expires in a substantially shorter duration in comparison to the software license.
-
-
8. A computer-implemented method comprising the following steps:
-
receiving a request for a software license from a client having a valid client image;
submitting a challenge to the client, the challenge comprising a random number;
computing, at the client, a function of the challenge and the client image to produce a response;
returning the response to the server;
deriving the client image from the response at the server; and
verifying the client image at the server prior to granting the software license. - View Dependent Claims (9, 10, 11, 12)
concatenating the random number and the client image to produce a concatenated value; and
computing a hash function of the concatenated value.
-
-
10. A computer-implemented method as recited in claim 8, further comprising the step of rejecting the request for the software license in the event that the client image cannot be verified.
-
11. A computer-implemented method as recited in claim 8, further comprising the step of establishing a trust with the client and subsequently granting the software license in the event that the client image can be verified.
-
12. Computer-readable media distributed at the server and the client having computer readable instructions for performing the steps as recited in claim 8.
-
13. A computer-implemented method comprising the following steps:
-
submitting an old software license from a client to a server, the old software license containing a license ID;
determining whether an upgrade software license is available for the license ID;
granting the upgrade software license, if available, to the client; and
replacing, at the client, the old software license with the upgrade software license. - View Dependent Claims (14)
-
-
15. Computer-readable media distributed at the server and the client having computer readable instructions for performing the steps as recited in claim 15.
-
16. A license generator for issuing packs of software licenses to authorized license servers, comprising:
-
a request handler to receive a request from a license server for a license pack;
a license producer responsive to the request received by the request handler to generate a license pack containing a set of one or more individual software licenses;
the license producer assigning a license pack ID to the license pack, associating the license pack ID with the license server, and digitally signing the license pack; and
a master license database, the license producer storing the license pack ID in correlation with an ID of the license server in the master license database.
-
-
17. A license server for issuing individual software licenses from a software pack received from a licensing clearinghouse, comprising:
-
a license store to store the software pack of individual software licenses, each software license having an associated license ID;
a client image cache to store a set of client images;
a request handler to receive a request for a software license from a client;
a client authenticating module to determine whether the client is authentic and can receive a software license, wherein the client authenticating module receives a client image from the client and compares the received client image to the set of client images to evaluate whether the client is authentic; and
a granting module to grant a software license from the license store to an authenticated client and to associate the license ID with the authenticated client.
-
-
18. A license server for issuing individual software licenses from a software pack received from a licensing clearinghouse, comprising:
-
a license store to store the software pack of individual software licenses, each software license having an associated license ID;
a request handler to receive a request for a software license from a client;
a client authenticating module to determine whether the client is authentic and can receive a software license;
a granting module to grant a software license from the license store to an authenticated client and to associate the license ID with the authenticated client; and
a client assignment table containing a list of the software licenses that are granted to clients. - View Dependent Claims (19)
-
-
20. A client computer, comprising:
-
a license cache to store one or more software licenses;
a license requestor to request a software license from a license server;
a challenge handler to handle an authenticity challenge from the license server, the challenge handler computing a challenge response that contains a client image that can be used by the license server to evaluate whether the client is authentic and can be licensed, wherein the challenge contains a random number, and the challenge handler computes the challenge response by concatenating the random number with the client image to form a concatenated value and hashing the concatenated value; and
whereupon authentication by the license server and granting of a software license, the license requestor receiving the software license from the license server and storing the software license in the license cache.
-
Specification