System and method for software licensing
First Claim
1. One or more computer-readable media, wherein the media does not consist of a propagated data signal, the media having computer readable instructions stored thereon, the computer readable instructions, when executed by one or more processors, cause the one or more processors to perform acts comprising:
- receiving a request for a software license from a particular client, wherein the request includes a client ID;
determining an authenticity of the particular client, wherein determining the authenticity comprises;
maintaining a set of client executable images in a client image cache located on a license server, wherein the set of client executable images is maintained in the client image cache to prevent a third party from replaying exchanges between the particular client and the license server;
and determining whether a first client executable image corresponding to the particular client is present in the client image cache by using the client ID to identify the first client executable image in the client image cache;
if the first client executable image is present in the client image cache;
generating, at the license server, a client challenge and sending the client challenge to the particular client to establish a trust relationship with the particular client;
receiving from the particular client a client hash value in response to the client challenge;
computing, by the license server, a test hash value, wherein the test hash value is generated by concatenating the client challenge and the first client executable image;
comparing, at the license server, the test hash value with the client hash value received from the particular client to determine whether the client hash value was generated by concatenating the client challenge and a second client executable image stored on the particular client;
if the test hash value and the client hash value received from the particular client are the same;
establishing a trust relationship;
evaluating whether the requested software license is available for the;
particular client;
and if the requested software license is available, issuing the requested software license to the particular client;
if the test hash value and the client hash value received from the particular client are different, denying the requested software license and returning a software license rejection to the particular client;
and if the client executable image is not present in the client image cache, returning a software license rejection to the particular client.
1 Assignment
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. 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. 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.
68 Citations
10 Claims
-
1. One or more computer-readable media, wherein the media does not consist of a propagated data signal, the media having computer readable instructions stored thereon, the computer readable instructions, when executed by one or more processors, cause the one or more processors to perform acts comprising:
-
receiving a request for a software license from a particular client, wherein the request includes a client ID; determining an authenticity of the particular client, wherein determining the authenticity comprises;
maintaining a set of client executable images in a client image cache located on a license server, wherein the set of client executable images is maintained in the client image cache to prevent a third party from replaying exchanges between the particular client and the license server;and determining whether a first client executable image corresponding to the particular client is present in the client image cache by using the client ID to identify the first client executable image in the client image cache; if the first client executable image is present in the client image cache; generating, at the license server, a client challenge and sending the client challenge to the particular client to establish a trust relationship with the particular client; receiving from the particular client a client hash value in response to the client challenge;
computing, by the license server, a test hash value, wherein the test hash value is generated by concatenating the client challenge and the first client executable image;comparing, at the license server, the test hash value with the client hash value received from the particular client to determine whether the client hash value was generated by concatenating the client challenge and a second client executable image stored on the particular client;
if the test hash value and the client hash value received from the particular client are the same;establishing a trust relationship; evaluating whether the requested software license is available for the;
particular client;and if the requested software license is available, issuing the requested software license to the particular client;
if the test hash value and the client hash value received from the particular client are different, denying the requested software license and returning a software license rejection to the particular client;and if the client executable image is not present in the client image cache, returning a software license rejection to the particular client. - View Dependent Claims (2, 3, 4, 10)
-
-
5. A license server for issuing individual software licenses from a software pack received from a licensing clearinghouse, the license server comprising:
- a computer processor for executing computer executable instructions;
and at least one computer storage medium storing computer executable instructions that when executed by the computer processor provide;
means for storing the software pack of individual software licenses, each software license having an associated license ID;means for receiving a request for a software license from a client, wherein the request comprises a client ID identifying the client; means for determining whether the client is authentic and can receive the requested software license, wherein determining whether the client is authentic comprises; maintaining a plurality of client executable images in a client image cache;
determining whether a first client executable image corresponding to the client is present in the client image cache by using the client ID to identify the first client executable image in the client image cache;
when the first client executable image is present, generating a client challenge and sending the client challenge to the client;
receiving from the client a client hash value in response to the client challenge;computing a test hash value, wherein the test hash value is generated by concatenating the client challenge and the first client executable image; comparing the test hash value with the client hash value received from the client to determine whether the client hash value was generated by concatenating the client challenge and a second client executable image stored on the particular client; when the test hash value and the client hash value match, determining that the client is authentic and establishing a trust relationship; means for granting a software license from a license store to each authenticated client and to associate a license ID corresponding to the granted software license with each authenticated client; and
client assignment table means for maintaining a list of the granted software licenses and each associated authenticated client, wherein the client assignment table comprises a plurality of records, each record having a unique license ID corresponding to each software license of a plurality of software licenses, and each record having an associated license pack ID identifying a license pack corresponding to the plurality of software licenses. - View Dependent Claims (6, 7, 8, 9)
- a computer processor for executing computer executable instructions;
Specification