IP Library Granted Patent US 8,781,971
Granted Patent B2
US 8,781,971 · App. 13/784,712 · Granted Jul 15, 2014

Method and apparatus for enforcing software licenses

Inventors: Gerald Blaine Garst, Jr. (Belmont, CA); Bertrand Serlet (Palo Alto, CA)
Assignee: Apple Inc.
G06Q20/1235
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,781,971
App. No.
13/784,712
Granted
Jul 15, 2014
Kind
B2
Abstract

A method and apparatus for enforcing software licenses for resource libraries such as an application program interface (API), a toolkit, a framework, a runtime library, a dynamic link library (DLL), an applet (e.g., a Java or ActiveX applet), or any other reusable resource. The resource library can be used by authorized end user software programs. A “per-program” licensing scheme for a resource library can allow a resource library to be licensed only for use with particular software programs.

Claims (46)

1. A method for controlling a manner in which a software application accesses an application programming interface (API), wherein the software application executes on a computing device and the API is available on the computing device, and the method comprises:

receiving, from the software application executing on the computing device, a request to access the API;

extracting, from the API, first license information that identifies whether all software applications executing on the computing device are permitted to access the API;

identifying, based on the first license information, that not all software applications executing on the computing device are permitted to access the API; and

in response to identifying:

extracting, from the software application, second license information that identifies whether the software application is permitted to access the API,

determining, based on the second license information, that the software application is permitted to access the API, and

in response to determining:

granting the software application access to the API.

2. The method of claim 1 , wherein the API comprises a toolkit, a framework, a runtime library, a dynamic link library, or an applet, and the request to access the API is generated by a calling function or an object associated with the software application.

3. The method of claim 1 , wherein determining that the software application is permitted to access the API comprises utilizing a function, a key, and a text string associated with the software application.

4. The method of claim 3 , wherein the text string includes one or more use terms, and the key is unique to the software application and the use terms.

5. The method of claim 1 , wherein the first license information comprises a site license for the computing device.

6. A non-transitory computer readable storage medium storing instructions that, when executed by a processor included in a computing device, cause the computing device to control a manner in which a software application accesses an application programming interface (API), by carrying out steps that include:

receiving, from the software application executing on the computing device, a request to access the API;

extracting, from the API, first license information that identifies whether all software applications executing on the computing device are permitted to access the API;

identifying, based on the first license information, that not all software applications executing on the computing device are permitted to access the API; and

in response to identifying:

extracting, from the software application, second license information that identifies whether the software application is permitted to access the API,

determining, based on the second license information, that the software application is permitted to access the API, and

in response to determining:

granting the software application access to the API.

7. The non-transitory computer readable storage medium of claim 6 , wherein the API comprises a toolkit, a framework, a runtime library, a dynamic link library, or an applet, and the request to access the API is generated by a calling function or an object associated with the software application.

8. The non-transitory computer readable storage medium of claim 6 , wherein determining that the software application is permitted to access the API comprises utilizing a function, a key, and a text string associated with the software application.

9. The non-transitory computer readable storage medium of claim 8 , wherein the text string includes one or more use terms, and the key is unique to the software application and the use terms.

10. The non-transitory computer readable storage medium of claim 6 , wherein the first license information comprises a site license for the computing device.

11. A system, comprising:

at least one processor; and

a storage device storing instructions that, when executed by the at least one processor, cause the at least one processor to control a manner in which a software application accesses an application programming interface (API), by carrying out steps that include:

receiving, from the software application executing on the system, a request to access the API;

extracting, from the API, first license information that identifies whether all software applications executing on the system are permitted to access the API;

identifying, based on the first license information, that not all software applications executing on the system are permitted to access the API; and

in response to identifying:

extracting, from the software application, second license information that identifies whether the software application is permitted to access the API,

determining, based on the second license information, that the software application is permitted to access the API, and

in response to determining:

granting the software application access to the API.

12. The system of claim 11 , wherein the API comprises a toolkit, a framework, a runtime library, a dynamic link library, or an applet, and the request to access the API is generated by a calling function or an object associated with the software application.

13. The system of claim 11 , wherein determining that the software application is permitted to access the API comprises utilizing a function, a key, and a text string associated with the software application.

14. The system of claim 13 , wherein the text string includes one or more use terms, and the key is unique to the software application and the use terms.

15. The system of claim 11 , wherein the first license information comprises a site license for the system.

16. The method of claim 1 , wherein extracting the second license information from the software application comprises reading from a data segment of the software application a license key string and a license agreement string.

17. The method of claim 1 , wherein extracting the second license information from the software application comprises receiving a transmission of the second license information from the software application.

18. The non-transitory computer readable storage medium of claim 6 , wherein extracting the second license information from the software application comprises reading from a data segment of the software application a license key string and a license agreement string.

19. The non-transitory computer readable storage medium of claim 6 , wherein extracting the second license information from the software application comprises receiving a transmission of the second license information from the software application.

20. The system of claim 11 , wherein extracting the second license information from the software application comprises reading from a data segment of the software application a license key string and a license agreement string.

Continuity (4)
Continuation 13244233 · Sep 23, 2011
Continuation 09704254 · Nov 1, 2000
Continuation 08901776 · Jul 28, 1997
Related Publication 20130179989A1 · Jul 11, 2013