IP Library Granted Patent US 9,417,871
Granted Patent B2
US 9,417,871 · App. 14/564,518 · Granted Aug 16, 2016

Automatic generation of certificate of origin (COO) for software systems

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 9,417,871
App. No.
14/564,518
Granted
Aug 16, 2016
Kind
B2
Abstract

A system includes at least one computing device. The computing device has one or more processors, a memory, and a storage storing computer executable code. The computer executable code, when executed at the processors, is configured to process a plurality of source modules to generate a plurality of binary modules corresponding to the source modules. Each source module has at least one source file and a control file including a certificate of origin (COO) of the source module, and each binary module generated from each source module has at least one corresponding binary file and a copy of the control file. Once the binary modules are generated, the computer executable code combines the binary files of each of the binary modules to generate an executable file, and generates a COO file for the executable file based on the control files from the source modules or the binary modules.

Claims (51)

1. A system, comprising:

at least one computing device, comprising one or more processors, a memory, and a storage storing computer executable code, wherein the computer executable code, when executed at the one or more processors, is configured to:

process a plurality of source modules to generate a plurality of binary modules corresponding to the source modules, wherein each source module has at least one source file and a control file comprising a certificate of origin (COO) of the source module, and each binary module generated from each source module has at least one binary file corresponding to the at least one source file and a copy of the control file;

combine the binary files of each of the binary modules to generate an executable file; and

generate a COO file for the executable file based on the control files from the source modules or the binary modules by:

for each of the source modules, determining whether an identifier of the source module is present in a standard reference COO file, wherein the standard reference COO file has a list of identifiers of a plurality of modules and COO information corresponding to the plurality of modules;

when the identifier of one of the source modules is present in the standard reference COO file, retrieving the COO information corresponding to the identifier from the standard reference COO file as COO information of the one of the source modules;

when the identifier of the one of the source modules is not present in the standard reference COO file, retrieving the COO information of the one of the source modules from the corresponding control file of the one of the source modules; and

generating the COO file by combining the retrieved COO information of all of the source modules.

2. The system of claim 1 , wherein the COO of each source module comprises at least one origin and at least one license of the corresponding source module.

3. The system of claim 1 , wherein at least one of the source modules has a plurality of the source files having the same origin.

4. The system of claim 1 , wherein the executable file is a software image file or a firmware image file.

5. The system of claim 1 , wherein the computer executable code comprises:

a compiling module configured to process the plurality of source modules to generate the plurality of binary modules corresponding to the source modules;

a linker module configured to combine the binary files of each of the binary modules to generate the executable file; and

a control file processing module configured to generate the COO file for the executable file based on the control files from the source modules or the binary modules.

6. The system of claim 1 , wherein the standard reference COO file is stored in the storage.

7. The system of claim 1 , wherein the identifier of each source module is a name of the source module.

8. The system of claim 1 , wherein the at least one source file of the source modules is programmed in a customized programming language, or a set of automation scripts.

9. A method of generating a certificate of origin (COO) for a software or firmware, comprising:

processing, at an automatic COO generating application being executed at one or more processors of at least one computing device, a plurality of source modules to generate a plurality of binary modules corresponding to the source modules, wherein each source module has at least one source file and a control file comprising a COO of the source module, and each binary module generated from each source module has at least one binary file corresponding to the at least one source file and a copy of the control file;

combining, by the executed automatic COO generating application, the binary files of each of the binary modules to generate an executable file; and

generating, by the executed automatic COO generating application, a COO file for the executable file based on the control files from the source modules or the binary modules, comprising:

for each of the source modules, determining whether an identifier of the source module is present in a standard reference COO file, wherein the standard reference COO file has a list of identifiers of a plurality of modules and COO information corresponding to the plurality of modules;

when the identifier of one of the source modules is present in the standard reference COO file, retrieving the COO information corresponding to the identifier from the standard reference COO file as COO information of the one of the source modules;

when the identifier of the one of the source modules is not present in the standard reference COO file, retrieving the COO information of the one of the source modules from the corresponding control file of the one of the source modules; and

generate the COO file by combining the retrieved COO information of all of the source modules.

10. The method of claim 9 , wherein the COO of each source module comprises at least one origin and at least one license of the corresponding source module, and the executable file is a software image file or a firmware image file.

11. The method of claim 9 , wherein at least one of the source modules has a plurality of the source files having the same origin.

12. The method of claim 9 , wherein the automatic COO generating application comprises:

a compiling module configured to process the plurality of source modules to generate the plurality of binary modules corresponding to the source modules;

a linker module configured to combine the binary files of each of the binary modules to generate the executable file; and

a control file processing module configured to generate the COO file for the executable file based on the control files from the source modules or the binary modules.

13. The method of claim 9 , wherein the identifier of each source module is the name of the source module.

14. A non-transitory computer readable medium storing computer executable code, wherein the code, when executed at one or more processors of at least one computing device, is configured to:

process a plurality of source modules to generate a plurality of binary modules corresponding to the source modules, wherein each source module has at least one source file and a control file comprising a certificate of origin (COO) of the source module, and each binary module generated from each source module has at least one binary file corresponding to the at least one source file and a copy of the control file;

combine the binary files of each of the binary modules to generate an executable file; and

generate a COO file for the executable file based on the control files from the source modules or the binary modules by:

for each of the source modules, determining whether an identifier of the source module is present in a standard reference COO file, wherein the standard reference COO file has a list of identifiers of a plurality of modules and COO information corresponding to the plurality of modules;

when the identifier of one of the source modules is present in the standard reference COO file, retrieving the COO information corresponding to the identifier from the standard reference COO file as COO information of the one of the source modules;

when the identifier of the one of the source modules is not present in the standard reference COO file, retrieving the COO information of the one of the source modules from the corresponding control file of the one of the source modules; and

generate the COO file by combining the retrieved COO information of all of the source modules.

15. The non-transitory computer readable medium of claim 14 , wherein the COO of each source module comprises at least one origin and at least one license of the corresponding source module, and the executable file is a software image file or a firmware image file.

16. The non-transitory computer readable medium of claim 14 , wherein at least one of the source modules has a plurality of the source files having the same origin.

17. The non-transitory computer readable medium of claim 14 , wherein the code comprises:

a compiling module configured to process the plurality of source modules to generate the plurality of binary modules corresponding to the source modules;

a linker module configured to combine the binary files of each of the binary modules to generate the executable file; and

a control file processing module configured to generate the COO file for the executable file based on the control files from the source modules or the binary modules.

18. The non-transitory computer readable medium of claim 14 , wherein the identifier of each source module is the name of the source module.

19. The method of claim 9 , wherein the at least one source file of the source modules is programmed in a customized programming language, or a set of automation scripts.

20. The non-transitory computer readable medium of claim 14 , wherein the at least one source file of the source modules is programmed in a customized programming language, or a set of automation scripts.

Assignments (5)
PATENT SECURITY AGREEMENT Recorded Oct 23, 2024
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: BAIN CAPITAL CREDIT, LP, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 069229/0834 →
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2024
From: MIDCAP FINANCIAL TRUST
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 069205/0795 →
SECURITY INTEREST Recorded May 6, 2019
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT
Reel/Frame 049087/0266 →
ENTITY CONVERSION Recorded Apr 15, 2019
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 049091/0973 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: CHRISTOPHER, SAMVINESH; THANGAPANDIAN, WINSTON; BHATIA, ANURAG
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 034438/0117 →