Patent ID: 8856867

Claim:
A method for controlling access to program assets, comprising: a first entity hosting a first set of program assets; the first entity receiving a second set of program assets from a second entity, wherein the second entity provides the second set of program assets; and the first entity identifying if a customer of the first entity is also a valid customer of the second entity without receiving information about the valid customer from the second entity, wherein the information is needed to authorize the valid customer to access the second set of program assets, thereby facilitating the second entity to independently market the second set of program assets, wherein the facilitating comprises: the first entity associating a first license code with the second set of program assets; the first entity associating a first master code with the first license code, wherein the first master code is a unique master key that is associated with the first license code; the first entity providing the first license code, the first master code, and a validation function to the second entity, wherein the validation function is a cryptographic function; the second entity cryptographically generating a first validation code for the valid customer of the second entity by: combining the master code and a generated code, wherein the generated code is one of a random or a pseudorandom sequence of at least 64 bits, and applying the validation function to the combination of the master code and the generated code; the second entity providing the first validation code, the generated code, and the license code to the valid customer; the first entity hosting, on a website, the second set of program assets; the first entity receiving a request from the customer of the first entity, via the website, to access the second set of program assets, wherein the request includes the first validation code, the first license code, and the generated code; the first entity cryptographically generating a second validation code for the customer by: combining the master code and a generated code, and applying the validation function to the combination of the master code and the generated code; the first entity determining if the first validation code matches the second validation code; and in response to the determining that the first validation code matches the second validation code, the first entity identifying that the customer is also the valid customer of the second entity, the first entity authorizing access for the customer to the second set of program assets.