IP Library Granted Patent US 11,170,099
Granted Patent B1
US 11,170,099 · App. 16/773,924 · Granted Nov 9, 2021

Filtering policies for evaluation by an embedded machine

Inventors: Torin Sandall (San Francisco, CA); Timothy L. Hinrichs (Los Altos, CA); Teemu Koponen (San Francisco, CA)
Assignee: STYRA, INC.
G06F21/54G06F2221/033
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 11,170,099
App. No.
16/773,924
Granted
Nov 9, 2021
Kind
B1
Abstract

Some embodiments provide a method for limiting data passed between an application and a process virtual machine (VM) embedded in the application that authorizes API (Application Programming Interface) calls to the application. The method receives a policy code comprising references to a group of parameters. The method modifies the policy code to remove references in the policy code to a set of the parameters that are not used during evaluation of the policy. The method generates a set of binary instructions from the modified policy code, where the process VM does not use the set of parameters while executing the binary instructions to make an authorization decision for a particular API call.

Claims (26)

1. A method for limiting data passed between an application and a process virtual machine (VM) embedded in the application that authorizes API (Application Programming Interface) calls to the application, the method comprising:

receiving a policy code comprising references to a plurality of parameters;

modifying the policy code to remove references in the policy code to a set of the parameters that are not used during evaluation of the policy; and

generating a set of binary instructions from the modified policy code, wherein the process VM does not use the set of parameters while executing the binary instructions to make an authorization decision for a particular API call.

2. The method of claim 1 , wherein the set of parameters is a first set of parameters, wherein a second set of parameters comprises parameters in the plurality of parameters that are not in the first set of parameters, wherein the second set of parameters are provided to the process VM by the application.

3. The method of claim 2 , wherein the first set of parameters are not provided to the process VM by the application.

4. The method of claim 1 , wherein the application received at least one parameter in the plurality of parameters from the particular API call.

5. The method of claim 1 further comprising providing the set of binary instructions to the process VM inside the application.

6. The method of claim 1 further comprising, prior to modifying the policy code, evaluating a portion of the policy.

7. The method of claim 1 , wherein generating the set of binary instructions from the modified policy code comprises compiling the policy code.

8. The method of claim 7 , wherein the set of binary instructions is generated by including one or more policy extension codes in addition to the policy code, wherein a policy extension code defines an extension to the policy, wherein at least one policy extension code is in a different language than the policy code.

9. The method of claim 1 , wherein for each binary instruction in the set of binary instructions, the process VM (i) translates the binary instruction into a binary instruction that is native to the application, and (ii) executes the translated native instruction.

10. The method of claim 1 , wherein the set of binary instructions is a first set of binary instructions, wherein for each binary instruction in the first set of binary instructions, the process VM (i) translates the first set of instructions into a code, (ii) optimizes the translated code for at least one of the application and the host system, (iii) compiles the translated code into a second set of instructions that are native to the application, and (iv) executes the native set of instructions.

11. The method of claim 1 , wherein the application executes within virtualization software executing on a host computer.

12. A non-transitory machine readable medium storing a program which when executed by at least one processing unit limits data passed between an application and a process virtual machine (VM) embedded in the application that authorizes API (Application Programming Interface) calls to the application, the program comprising sets of instructions for:

receiving a policy code comprising references to a plurality of parameters;

modifying the policy code to remove references in the policy code to a set of the parameters that are not used during evaluation of the policy; and

generating a set of binary instructions from the modified policy code, wherein the process VM does not use the set of parameters while executing the binary instructions to make an authorization decision for a particular API call.

13. The non-transitory machine readable medium of claim 12 , wherein the set of parameters is a first set of parameters, wherein a second set of parameters comprises parameters in the plurality of parameters that are not in the first set of parameters, wherein (i) the first set of parameters are not provided to the process VM by the application and (ii) the second set of parameters are provided to the process VM by the application.

14. The non-transitory machine readable medium of claim 12 , wherein the application received at least one parameter in the plurality of parameters from the particular API call.

15. The non-transitory machine readable medium of claim 12 further comprising a set of instructions for providing the set of binary instructions to the process VM inside the application.

16. The non-transitory machine readable medium of claim 12 further comprising a set of instructions for, prior to modifying the policy code, evaluating a portion of the policy.

17. The non-transitory machine readable medium of claim 12 , wherein the set of instructions for generating the set of binary instructions from the modified policy code comprises a set of instructions for compiling the policy code.

18. The non-transitory machine readable medium of claim 17 , wherein the set of binary instructions is generated by including one or more policy extension codes in addition to the policy code, wherein a policy extension code defines an extension to the policy, wherein at least one policy extension code is in a different language than the policy code.

19. The non-transitory machine readable medium of claim 12 , wherein for each binary instruction in the set of binary instructions, the process VM (i) translates the binary instruction into a binary instruction that is native to the application, and (ii) executes the translated native instruction.

20. The non-transitory machine readable medium of claim 12 , wherein the set of binary instructions is a first set of binary instructions, wherein for each binary instruction in the first set of binary instructions, the process VM (i) translates the first set of instructions into a code, (ii) optimizes the translated code for at least one of the application and the host system, (iii) compiles the translated code into a second set of instructions that are native to the application, and (iv) executes the native set of instructions.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2025
From: STYRA, INC.
To: APPLE INC.
Reel/Frame 072818/0489 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2025
From: STYRA, INC.
To: APPLE INC.
Reel/Frame 072522/0568 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2020
From: SANDALL, TORIN; HINRICHS, TIMOTHY L.; KOPONEN, TEEMU
To: STYRA, INC.
Reel/Frame 052391/0264 →
Continuity (3)
Provisional Application 62892735 · Aug 28, 2019
Provisional Application 62855726 · May 31, 2019
Provisional Application 62846461 · May 10, 2019
Cited By (19)
US 12,287,906 US 12,293,005 US 12,299,502 US 12,307,305 US 12,353,877 US 12,386,684 US 12,401,694 US 12,405,948 US 12,407,647 US 12,418,544 US 12,436,752 US 12,437,057 US 12,438,714 US 12,443,958 US 12,498,998 US 12,566,828 US 12,693,839 US 12,695,789 US 12,706,953